Apache 代理返回 403 禁止访问

Apache 代理返回 403 禁止访问

我正在尝试设置一个主页,我可以使用代理将我的请求重定向到其他服务器,这样我就有一个单一的入口点。我曾经在运行 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,allowOrder allow,deny然后 Apache 将允许您指定的主机,然后再拒绝所有其他主机。

相关内容