使用代理通行证时,如何阻止 apache httpd 中的某些 URL?

使用代理通行证时,如何阻止 apache httpd 中的某些 URL?

我的网站使用 apache httpd 对 Express(Node.js 应用程序)中运行的应用程序进行反向代理。有 2 个 Express 服务器,一个用于后端,另一个用于前端托管。现在,我正试图阻止进入我网站的恶意请求,因此它返回 404 或错误请求。

我的 some-site-ssl.conf 示例如下,但它看起来似乎并没有阻止恶意网站,任何帮助都太棒了!!谢谢。


<VirtualHost _default_:443>
      ServerAdmin webmaster@localhost

      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined

      SSLEngine on

      SSLCertificateFile      /etc/letsencrypt/live/some-site.com/fullchain.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/some-site.com/privkey.pem
      Include /etc/letsencrypt/options-ssl-apache.conf

      RewriteEngine On
      RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?bad-word(-|.).*$  [NC]
      RewriteCond %{HTTP_REFERER} ^https://(www\.)?.*(-|.)?bad-word(-|.).*$  [NC]
      RewriteRule ^(.*)$ - [F,L]

      ProxyRequests On

      ProxyPass /api http://some-site.com:3000/api
      ProxyPassReverse /api http://some-site.com:3000/api

      ProxyPass / http://some-site.com:4226/
      ProxyPassReverse / http://some-site.com:4226/
</VirtualHost>

答案1

您可以使用标签控制对任何资源的访问Location,并且通过标签,您可以禁用某些主机对您的资源的访问,如下所示:

<Location "/denied/resource">
    <RequireAll>
        Require not ip 1.2.3.4
        Require not host spammer.domain
        Require all granted
    <RequireAll>
</Location>

访问权限是从上到下继承的,因此拒绝访问/实际上会将该客户端锁定在您的站点之外(当然,除非授予对较低级别资源的访问权限,因此可能无法访问/,但可以访问/this/one/)。请参阅Apache HTTP 服务器文档了解更多信息。

正如@Freddy 所说,你确实应该删除那一ProxyRequests On行。

相关内容