Ваш вопрос довольно субъективен, и конфигурирование порта должно быть очень легким с любым http сервером.
Хотя, я рекомендовал бы lighttpd
с server.port = 1080
(или безотносительно выше 1024 для некорневых пользователей) в конфигурационном файле:
server.document-root = "/home/foo/www"
server.port = 1080
Это - достаточно полный http сервер, и для обслуживания статического содержания, почти никакая другая конфигурация не необходима. Просто вставьте свои данные server.document-root
каталог, и запускает его с lighttpd -f configuration-file
.
На очень простом уровне это - устройство, это реализовано просто в программном обеспечении. Подобный способу, которым VM является полностью программным обеспечением, так обратная петля (хотя с помощью очень отличающихся механизмов).
Обычно, когда интерфейс отправляет пакет, он в конечном счете помещается в провод и сбрасывается. Обратная петля, с другой стороны, вместо того, чтобы быть помещенным в провод исходящий пакет перемещен к входящей очереди для того интерфейса и затем обработан как любой входящий пакет.
В то время как netfilter
оценивает пакет существует два раза, когда решение по маршрутизации сделано. Однажды для входящих пакетов (например, этот пакет был получен в правильном интерфейсе?) и однажды для исходящих пакетов (например, на чем должен быть передан интерфейс этот пакет?). Это решение по маршрутизации - когда ядро проверяет пакет по локальной таблице маршрутизации.
Таблица маршрутизации → устройство → драйвер устройства (обратная петля)
UPD. (2012-10-20): Недавно столкнулся с документом sysctl.: «…
accept_local - BOOLEAN
Accept packets with local source addresses. In combination
with suitable routing, this can be used to direct packets
between two local interfaces over the wire and have them
accepted properly.
rp_filter must be set to a non-zero value in order for
accept_local to have an effect.
…», таким образом, это отвечает на 2-ю часть Вашего вопроса, надо надеяться.