我的网站使用 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/
)。请参阅Apache HTTP 服务器文档了解更多信息。
正如@Freddy 所说,你确实应该删除那一ProxyRequests On
行。