
私のサイトでは、Express (Node.js アプリ) で実行されているアプリへのリバース プロキシを実行するために apache httpd を使用しています。2 つの Express サーバーがあり、1 つはバックエンド用、もう 1 つはフロントエンド ホスティング用です。現在、サイトに送信される悪意のあるリクエストをブロックして、404 または不正なリクエストを返そうとしています。
私の some-site-ssl.conf サンプルは以下の通りですが、悪意のある Web サイトをブロックしているようには見えません。ご協力いただければ幸いです。ありがとうございます。
<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
。