プロキシ パスを使用しているときに、Apache httpd で特定の URL をブロックするにはどうすればよいですか?

プロキシ パスを使用しているときに、Apache httpd で特定の URL をブロックするにはどうすればよいですか?

私のサイトでは、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

関連情報