Apache-2.4

使用代理傳遞時如何阻止 apache httpd 中的某些 URL?

  • July 19, 2019

我的網站正在使用 apache httpd 對在 Express 中執行的應用程序(Node.js 應用程序)進行反向代理。有 2 台快速伺服器,一台用於後端,另一台用於前端託管。現在我正在嘗試阻止進入我的站點的惡意請求,以便它返回 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>

您可以使用標籤控制對任何資源的訪問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線。

引用自:https://serverfault.com/questions/975866