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