我正在尝试设置一个主页,我可以使用代理将我的请求重定向到其他服务器,这样我就有一个单一的入口点。我曾经在运行 WAMP 的 Windows 机器上正确运行过此设置。我切换到 CentOS7 上的 Apache,从那时起,我就遇到了这个问题。这是我的登录页面:
<VirtualHost *:443>
ServerName myhost.duckdns.org
DocumentRoot /var/www/html/panel
SSLEngine on
SSLCertificateKeyFile /etc/letsencrypt/live/myhost.duckdns.org/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/myhost.duckdns.org/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/myhost.duckdns.org/chain.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
<Directory /var/www/html/panel>
Order deny,allow
Deny from all
Allow from myips
AuthType Basic
AuthName "Authorised Users Only"
AuthUserFile .htpasswd
Satisfy Any
Require valid-user
</Directory>
这是代理密码
<VirtualHost *:443>
ServerName sickbeard.my.to
SSLEngine on
SSLCertificateKeyFile /etc/letsencrypt/live/sickbeard.my.to/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/sickbeard.my.to/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/sickbeard.my.to/chain.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
<Proxy *>
Order deny,allow
Deny from all
Allow from myips
AuthType Basic
AuthName "Authorised Users Only"
AuthUserFile .htpasswd
Satisfy Any
Require valid-user
</Proxy>
ProxyPass / http://192.168.0.170:8081/
ProxyPassReverse / http://192.168.0.170:8081/
</VirtualHost>
我可以毫无问题地访问主页,并且可以使用 IP 或主机名访问 sickbeard,但使用主机名会得到 403。
答案1
找到了!它被 mod_security 模块阻止了!我应该先检查一下日志。
我在 httpd.conf 中禁用了该模块。我阅读了一些相关内容,对于我所做的事情来说,这个模块显然有点过头了。
答案2
这是一篇较旧的帖子,但希望它仍然可以帮助将来找到它的人。问题确实出在您的 mod_security 模块上,但只是因为您的模块正在执行您在配置中告诉它执行的操作。给您带来麻烦的是这两行:
Order deny,allow
Deny from all
操作员Order deny,allow
指示 Apache 在处理您的拒绝规则之前先处理您的允许规则。由于您有Deny from all
,Apache 在被告知允许某些内容之前会拒绝所有内容。此问题的快速解决方法是更改为Order deny,allow
。Order allow,deny
然后 Apache 将允许您指定的主机,然后再拒绝所有其他主机。