Как заблокировать определенные URL-адреса в Apache httpd при использовании proxy pass?

Как заблокировать определенные URL-адреса в Apache httpd при использовании proxy pass?

Мой сайт использует 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/). Смотритедокументация по HTTP-серверу Apacheдля получения дополнительной информации.

И как сказал @Freddy, тебе действительно стоит удалить эту ProxyRequests Onстроку.

Связанный контент