Я хотел бы, чтобы веб-сервер Apache, который я установил дома, прослушивал порт 80 и порт 8080.
Я добавил Listen 8080
к httpd.conf и перезапустил службы Apache, но сервер, похоже, не прослушивает 8080. Перфорация http: // localhost: 808 истекает и не отображает мой индекс. html но http: // localhost отобразит мой index.html.
Как мне заставить его слушать 80 и 8080?
Стандартная установка Apache для Debian будет иметь следующий фрагмент конфигурации:
Listen 80 <IfModule mod_ssl.c> # Виртуальные хосты на основе имени SSL еще не поддерживаются, поэтому здесь нет оператора # NameVirtualHost Прослушайте 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
Вам может понадобиться настроить сайт на порт 8080, чтобы это работало. Прочитайте документацию по Apache Virtual Hosts . Каждый "сайт" может быть настроен на прием соединений через определенные порты (и IP-адреса и т.д.). Есть ли в вашем http.conf виртуальный хост, настроенный только для порта 80?
Также вы можете подтвердить, что сервер прослушивает 8080, используя netstat -nlp
и ищу запись в этом порту.
Вы также можете проверить, включен ли SELinux. Конфигурация SELinux по умолчанию может не позволять запускать Apache на нестандартных портах. Вот сайт, который показывает вам, используете ли вы SELinux и как его отключить, если вы не хотите или не используете его возможности. http://www.crypt.gen.nz/selinux/disable_selinux.html
Предполагая, что Linux запускается netstat -lntp
как root, как вы можете видеть, слушает ли Apache 8080 или нет. Это поможет вам определить, связана ли проблема с тем, что Apache не слушает или существуют какие-либо внешние факторы (например, брандмауэр, selinux и т.д.) Для Apache, делающие тайм-аут соединения.