我有一台主机(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
看起来您已经有一个了,但是没有另一个。