it-swarm-ru.tech

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

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

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

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

45
Owen

Стандартная установка 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, чтобы увидеть, пытается ли он подключиться к этому порту и не работает, но не регистрирует проблему.

64
David Pashley

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

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

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

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

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

7
msanford

Шаг 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       
5
Rajat

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

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

0
Dana the Sane

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

0
Reamer77

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

0
Jason Tan