Apache 未监听配置了虚拟主机和反向代理的所有端口

Apache 未监听配置了虚拟主机和反向代理的所有端口

我有一台主机(Ubuntu 16.04)和一台虚拟机。我想使用 apache 通过反向代理模块将不同的端口转发到虚拟机。问题是,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。所有其他反向代理设置均按预期工作。

答案1

在您的 Apache 配置中的某个地方,您必须Listen对要监听的每个端口都有匹配的指令:

 Listen 3000
 Listen 3010

看起来您已经有一个了,但是没有另一个。

相关内容