Назад | Перейти на главную страницу

Как заставить веб-сервер Apache прослушивать два разных порта?

Я бы хотел, чтобы веб-сервер Apache, который я установил дома, прослушивал порт 80 и порт 8080.

я добавил Listen 8080 в httpd.conf и перезапустил службы Apache, но сервер, похоже, не слушает 8080. Пробиваясь http: // локальный: 8080 время истекает и мой index.html не отображается, но http: // localhost отобразит мой index.html.

Как заставить его слушать 80 и 8080?

Стандартная установка Apache в Debian будет иметь следующий фрагмент конфигурации:

Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

Это говорит apache прослушивать порт 80 и прослушивать порт 443, если настроен mod_ssl. В вашем случае вам нужно:

Listen 80
Listen 8080

Вам нужно убедиться, что вы запускаете перезапуск, а не операцию перезагрузки apache, чтобы он обращал внимание на новые директивы Listen. Самый безопасный вариант - остановить apache, убедиться, что он мертв, и запустить его снова.

Если эта конфигурация не работает, проверьте файлы журнала на наличие сообщений об ошибках. Вы можете использовать "netstat -lep --tcp", чтобы узнать, прослушивает ли что-нибудь порт 8080. Наконец, если все остальное не работает, попробуйте запустить apache под strace, чтобы узнать, пытается ли он подключиться к этому порту и не завершается ли он, но не регистрируя проблему.

Эти ответы хороши, но они исключают возможность того, что Оуэн имеет на самом деле это уже сделано ("Я добавил Listen 8080") может означать именно то, что он звучит (то есть то, что предложил Дэвид).

Если вы уже сделали это и по-прежнему обнаруживаете, что это не работает, убедитесь, что вы правильно настроили свои директивы для каждого поддомена, который у вас может быть, в том числе по умолчанию (если он был настроен вручную для прослушивания: 80 сразу после имени).

Вероятно, у вас есть такая директива:

<VirtualHost *:80>
 ServerName michaelsanford.com
 etc…
</VirtualHost>

Вам нужно изменить это на <VirtualHost *:8080> или <VirtualHost *:*>.

Шаг 1

#vi httpd.conf
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

httpd (apache) для прослушивания порта 80 и для прослушивания порта 443, если настроен mod_ssl.

Listen 80
Listen 8080

Шаг 2

#su - service httpd restart

Шаг 3

$ netstat -lntp

(Не все процессы могут быть идентифицированы, информация о процессах, не принадлежащих владельцам, отображаться не будет, вам нужно быть пользователем root, чтобы увидеть все.)

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:47027               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:80              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:8080            0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 ::ffff:127.0.0.1:45100      :::*                        LISTEN      3149/java           
tcp        0      0 :::111                      :::*                        LISTEN      -                   
tcp        0      0 :::80                       :::*                        LISTEN      -                   
tcp        0      0 :::57173                    :::*                        LISTEN      3149/java           
tcp        0      0 :::18197                    :::*                        LISTEN      3149/java           
tcp        0      0 :::22                       :::*                        LISTEN      -                   
tcp        0      0 ::1:631                     :::*                        LISTEN      -                   
tcp        0      0 :::40832                    :::*                        LISTEN      3149/java           
tcp        0      0 ::ffff:127.0.0.1:6880       :::*                        LISTEN      3149/java       

Вы также можете проверить, включен ли у вас SELinux. Конфигурация SELinux по умолчанию может не позволять запускать Apache на нестандартных портах. Вот сайт, который показывает, используете ли вы SELinux и как его отключить, если вы не хотите или не используете его функции. http://www.crypt.gen.nz/selinux/disable_selinux.html

Возможно, вам потребуется настроить сайт на порт 8080, чтобы это работало. Прочтите документацию для Виртуальные хосты Apache. Каждый «сайт» может быть настроен для приема соединений на определенных портах (а также IP-адресах и т. Д.). У вас есть виртуальный хост в вашем http.conf, который настроен только для порта 80?

Кроме того, вы можете подтвердить, что сервер прослушивает 8080, используя netstat -nlp и ищу запись в этом порту.

Предполагая, что Linux работает netstat -lntp как root, как вы можете видеть, прослушивает apache на 8080 или нет. Это поможет вам определить, заключается ли проблема в том, что apache не прослушивает, или есть внешние факторы (например, брандмауэр, selinux и т. Д.), Которые приводят к тайм-ауту соединения.