在 WordPress 中,垃圾评论是一个常见问题。除了使用插件(如 Akismet)来过滤垃圾评论外,你还可以通过配置 Nginx 的伪静态规则来阻止垃圾评论。以下是一些常见的 Nginx 规则,可以帮助减少垃圾评论的提交。
1. 阻止特定 User-Agent
许多垃圾评论是通过自动化工具提交的,这些工具通常使用特定的 User-Agent。你可以通过 Nginx 阻止这些 User-Agent:
nginx
复制
if ($http_user_agent ~* (wget|curl|scrapy|bot|spider|baiduspider|sogou|yahoo|slurp)) {
return 403;
}
2. 阻止特定 Referer
垃圾评论通常来自某些特定的 Referer,你可以通过 Nginx 阻止这些 Referer:
nginx
复制
if ($http_referer ~* (spamdomain1.com|spamdomain2.com|spamdomain3.com)) {
return 403;
}
3. 阻止包含特定关键词的评论
你可以通过 Nginx 阻止包含特定关键词的评论提交:
nginx
复制
if ($args ~* (viagra|cialis|loan|casino|porn)) {
return 403;
}
4. 限制评论提交频率
你可以通过 Nginx 限制评论提交的频率,防止恶意用户频繁提交评论:
nginx
复制
limit_req_zone $binary_remote_addr zone=comment:10m rate=1r/s;
location ~* /wp-comments-post.php {
limit_req zone=comment burst=5;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
5. 阻止空 Referer 的请求
许多垃圾评论是通过直接请求 wp-comments-post.php
提交的,这些请求通常没有 Referer。你可以通过 Nginx 阻止这些请求:
nginx
复制
if ($http_referer = "") {
return 403;
}
6. 阻止特定 IP 地址
如果你知道某些 IP 地址是垃圾评论的来源,可以直接阻止这些 IP:
nginx
复制
deny 192.168.1.1;
deny 10.0.0.0/8;
7. 阻止特定国家的访问
如果你发现大部分垃圾评论来自某些特定国家,可以使用 GeoIP 模块来阻止这些国家的访问:
nginx
复制
geoip_country /usr/share/GeoIP/GeoIP.dat;
if ($geoip_country_code ~ (CN|RU|IN)) {
return 403;
}
8. 完整的 Nginx 配置示例
以下是一个完整的 Nginx 配置示例,结合了上述规则:
nginx
复制
server {
listen 80;
server_name yourdomain.com;
# 阻止特定 User-Agent
if ($http_user_agent ~* (wget|curl|scrapy|bot|spider|baiduspider|sogou|yahoo|slurp)) {
return 403;
}
# 阻止特定 Referer
if ($http_referer ~* (spamdomain1.com|spamdomain2.com|spamdomain3.com)) {
return 403;
}
# 阻止包含特定关键词的评论
if ($args ~* (viagra|cialis|loan|casino|porn)) {
return 403;
}
# 阻止空 Referer 的请求
if ($http_referer = "") {
return 403;
}
# 阻止特定 IP 地址
deny 192.168.1.1;
deny 10.0.0.0/8;
# 限制评论提交频率
limit_req_zone $binary_remote_addr zone=comment:10m rate=1r/s;
location ~* /wp-comments-post.php {
limit_req zone=comment burst=5;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 其他 WordPress 伪静态规则
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
9. 注意事项
- 测试规则:在应用这些规则之前,建议在测试环境中进行测试,确保不会误伤正常用户。
- 定期更新规则:垃圾评论的来源和方式可能会不断变化,建议定期更新和调整规则。
- 结合插件使用:Nginx 规则可以与 WordPress 插件(如 Akismet、Antispam Bee 等)结合使用,提供更全面的防护。
通过以上 Nginx 伪静态规则,你可以有效地减少 WordPress 网站上的垃圾评论。
© 版权声明
THE END
暂无评论内容