как мне заставить apache web server прослушивать два разных порта?

<p>я хотел бы, чтобы веб-сервер apache, который я установил дома, прослушивал порт 80 и порт 8080.</p><p>я добавил <code>listen 8080</code> к httpd.conf и перезапустил службы apache, но сервер, похоже, не прослушивает 8080. перфорация <a href="http://localhost:8080">http: // localhost: 808</a> истекает и не отображает мой индекс. html но <a href="http://localhost">http: // localhost</a> отобразит мой index.html.</p><p>как мне заставить его слушать 80 и 8080?</p>

<p>стандартная установка apache для debian будет иметь следующий фрагмент конфигурации:</p><pre> listen 80 <ifmodule mod\_ssl.c> # виртуальные хосты на основе имени ssl еще не поддерживаются, поэтому здесь нет оператора # namevirtualhost прослушайте 443 </ ifmodule> </pre><p>это говорит apache прослушивать порт 80 и прослушивать порт 443, если настроен mod\_ssl. в вашем случае вы бы хотели:</p><pre><code>listen 80 listen 8080 </code></pre><p>вам нужно убедиться, что вы запускаете перезапуск, а не операцию перезагрузки на apache, чтобы он обращал внимание на новые директивы listen. самое безопасное, что нужно сделать, это остановить apache, убедиться, что он мертв, и запустить его снова.</p><p>если эта конфигурация не работает, проверьте файлы журнала на наличие сообщений об ошибках. вы можете использовать "netstat -lep --tcp", чтобы увидеть, прослушивает ли что-либо порт 8080. наконец, если все остальное не работает, попробуйте запустить apache под strace, чтобы увидеть, пытается ли он подключиться к этому порту и не работает, но не регистрирует проблему.</p>

<p>эти ответы великолепны, но они исключают возможность того, что оуэн <em>имеет</em> на самом деле уже сделал это ("я добавил <code>listen 8080</code> ") может означать именно то, на что это похоже (то есть, что предложил дэвид).</p><p>если вы уже сделали это и все еще находите, что он не работает, убедитесь, что вы правильно настроили свои директивы для каждого субдомена, который у вас может быть, в том числе и по умолчанию (если он был настроен вручную для прослушивания: 80 сразу после имени).</p><p>у вас, вероятно, есть такая директива:</p><pre><code><virtualhost *:80> servername michaelsanford.com etc… </virtualhost> </code></pre><p>вы должны изменить это на <code><virtualhost *:8080></code> или <code><virtualhost *:*></code>.</p>

<p>шаг 1</p><pre><code>#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> </code></pre><p>httpd (apache) для прослушивания порта 80 и прослушивания порта 443, если настроен mod\_ssl.</p><pre><code>listen 80 listen 8080 </code></pre><p>шаг 2</p><pre><code>#su - service httpd restart </code></pre><p>шаг 3</p><pre><code>$ netstat -lntp </code></pre><p>(не все процессы могут быть идентифицированы, информация о не принадлежащих процессах не будет показана, вам нужно быть пользователем root, чтобы увидеть все это.)</p><pre><code>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 </code></pre>

<p>вам может понадобиться настроить сайт на порт 8080, чтобы это работало. прочитайте документацию по <a href="http://httpd.apache.org/docs/2.2/vhosts/">apache virtual hosts</a> . каждый "сайт" может быть настроен на прием соединений через определенные порты (и ip-адреса и т.д.). есть ли в вашем http.conf виртуальный хост, настроенный только для порта 80?</p><p>также вы можете подтвердить, что сервер прослушивает 8080, используя <code>netstat -nlp</code> и ищу запись в этом порту.</p>

<p>вы также можете проверить, включен ли selinux. конфигурация selinux по умолчанию может не позволять запускать apache на нестандартных портах. вот сайт, который показывает вам, используете ли вы selinux и как его отключить, если вы не хотите или не используете его возможности. <a href="http://www.crypt.gen.nz/selinux/disable\_selinux.html">http://www.crypt.gen.nz/selinux/disable\_selinux.html</a> </p>

<p>предполагая, что linux запускается <code>netstat -lntp</code> как root, как вы можете видеть, слушает ли apache 8080 или нет. это поможет вам определить, связана ли проблема с тем, что apache не слушает или существуют какие-либо внешние факторы (например, брандмауэр, selinux и т.д.) для apache, делающие тайм-аут соединения.</p>