Как я могу заблокировать определенные URL-адреса в apache httpd при использовании прокси-передачи?

Мой сайт использует 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>

0
задан 19 July 2019 в 07:35
1 ответ

Вы можете контролировать доступ к любому ресурсу с помощью тега Location , и с его помощью вы можете отключить доступ с определенных хостов к вашим ресурсам, например:

<Location "/denied/resource">
    <RequireAll>
        Require not ip 1.2.3.4
        Require not host spammer.domain
        Require all granted
    <RequireAll>
</Location>

The права доступа наследуются сверху вниз, поэтому отказ в доступе к / практически заблокирует доступ этого клиента к вашему сайту (если, конечно, доступ не предоставлен ресурсу более низкого уровня, поэтому можно не иметь доступ к / , но иметь доступ к / this / one / ). См. документацию по HTTP-серверу Apache для получения дополнительной информации.

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

0
ответ дан 23 November 2019 в 22:47

Теги

Похожие вопросы