Apache-2.4

Apache 不會監聽所有配置有虛擬主機和反向代理的埠

  • September 25, 2018

我有一個主機(Ubuntu 16.04)和一個虛擬機。我想使用 apache 將不同的埠轉發到帶有反向代理模組的 VM。問題是,apache 不會監聽所有配置的埠。

我在 /etc/apache2/sites-enabled/moni1.softxs.ch 中有以下設置:

<VirtualHost *:80>
   ServerName          moni1.softxs.ch
   Redirect            301 / https://moni1.softxs.ch/
</VirtualHost>

<VirtualHost *:443>
   ServerName          moni1.softxs.ch
   ProxyPreserveHost   On
   ProxyRequests       Off
   ProxyPass           / http://172.16.3.101:80/ retry=0
   ProxyPassReverse    / http://172.16.3.101/
   SSLCertificateFile /etc/letsencrypt/live/moni1.softxs.ch/cert.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/moni1.softxs.ch/privkey.pem
   Include /etc/letsencrypt/options-ssl-apache.conf
   SSLCertificateChainFile /etc/letsencrypt/live/moni1.softxs.ch/chain.pem
</VirtualHost>

<VirtualHost *:3000>
   ServerName          moni1.softxs.ch
   ProxyPreserveHost   On
   ProxyRequests       Off
   ProxyPass           / http://172.16.3.101:3000/ retry=0
   ProxyPassReverse    / http://172.16.3.101/
</VirtualHost>

<VirtualHost *:3010>
   ServerName          moni1.softxs.ch
   ProxyPreserveHost   On
   ProxyRequests       Off
   ProxyPass           / http://172.16.3.101:3010/ retry=0
   ProxyPassReverse    / http://172.16.3.101/
</VirtualHost>

我可以通過 netstat 看到,apache 不在埠 3010 上偵聽。不知道,為什麼。

$ netstat -nlptu | grep apache2
tcp6       0      0 :::80                   :::*                    LISTEN      32252/apache2   
tcp6       0      0 :::3000                 :::*                    LISTEN      32252/apache2   
tcp6       0      0 :::443                  :::*                    LISTEN      32252/apache2 

埠是免費的,我可以用nc. 所有其他反向代理設置都按預期工作。

在您的 Apache 配置中,您必須Listen為要偵聽的每個埠都有匹配的指令:

Listen 3000
Listen 3010

看來您已經有了一個,但沒有另一個。

引用自:https://serverfault.com/questions/932579