我的 apache 设置有问题。
我使用的是 Proxmox 服务器,它有多个虚拟机,只有一个公共 IP。Apache 在 Proxmox 主机上运行,并通过反向代理将请求转发到虚拟机。Apache 也在虚拟机上运行,并通过文档根目录调用 Web 应用程序。
现在的问题是,当我在 URL 中输入现有目录时,apache 会重定向到虚拟机的本地 IP。
例子: https://example.com/admin--> 重定向至 -->http://10.10.10.101/管理员
不幸的是,我已经花了好几天时间尝试解决这个问题但却找不到错误。
感谢您的帮助。
设置 Proxmox 主机:
IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName www.example.com
ServerAlias www.example.com
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPreserveHost On
ProxyPass / http://10.10.10.101:80/
ProxyPassReverse / http://10.10.10.101:80/
Header add "Host" "www.example.com"
RequestHeader set "Host" "www.example.com"
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
设置虚拟机:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.example.com
ServerAlias www.example.com
Header add "Host" "www.example.com"
RequestHeader set "Host" "www.example.com"
DocumentRoot /var/www/www.example/current/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/www.example/current> 选项 +FollowSymLinks -Indexes AllowOverride All 要求全部授予
答案1
这是因为根据您提供的配置,没有与请求匹配的别名或服务器名称。
尝试将其编辑ServerName
为 example.com 而不是 www.example,或者您可以将其添加为ServerAlias
例子:
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example.com #Check this line
ServerAlias www.example.com
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPreserveHost On
ProxyPass / http://10.10.10.101:80/
ProxyPassReverse / http://10.10.10.101:80/
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>