Apache-2.4
使用代理傳遞時如何阻止 apache httpd 中的某些 URL?
我的網站正在使用 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
線。