使用 Nginx 伪静态规则有效阻止 WordPress 垃圾评论

在 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
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容