我已经在我的服务器上的虚拟机中安装了一个 web 应用程序(都运行 Debian 8 和 Apache2)。我在主机上使用反向代理将所有连接重定向到https://webapp.domain.com到虚拟机上 webapp 的内部地址 (http://192.168.100.101/webapp)使用以下虚拟主机配置:
<IfModule mod_proxy.c>
<VirtualHost *:443>
ServerName webapp.domain.com
ServerAlias www.webapp.domain.com
SSLProxyEngine On
SSLProxyCheckPeerExpire off
SSLProxyCheckPeerCN off
SSLProxyVerify none
ProxyPass / http://192.168.100.101/webapp/
ProxyPassReverse / http://192.168.100.101/webapp/
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/webapp.domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/webapp.domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/webapp.domain.com/fullchain.pem
ServerAdmin unavailable
CustomLog ${APACHE_LOG_DIR}/vhosts/webapp_access.log combined
ErrorLog ${APACHE_LOG_DIR}/vhosts/webapp_error.log
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
<Proxy *>
Order Allow,Deny
Allow from all
</Proxy>
</VirtualHost>
</IfModule>
但是,如果我尝试连接到主机 IP 上的任何地址,我最终会在虚拟机上看到 Web 应用程序(即,假设主机的公共 IP 是 10.10.10.10,连接到https://10.10.10.10/任何东西显示虚拟机上的 web 应用程序)。
我怎样才能防止这种情况发生?难道是客机配置造成的?
答案1
我认为问题就在这里
ProxyPass / http://192.168.100.101/webapp/
ProxyPassReverse / http://192.168.100.101/webapp/
您是说每个使用“/”的网址都需要转到 anotherIp/webapp/ 。
指定 webapp 应该可以解决问题:
ProxyPass /webapp http://192.168.100.101/webapp
ProxyPassReverse /webapp http://192.168.100.101/webapp