Мой сайт использует 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>
Вы можете контролировать доступ к любому ресурсу с помощью тега 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
.