社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

域名防红 Nginx版,一个公认的“最好”的万能脚本分享 支持QQ和微信

SEO实战营 • 3 周前 • 72 次点击  

对于在Nginx上实现域名“防红”跳转,目前并没有一个公认的“最好”的万能脚本,但你可以通过组合几种经过验证的 Nginx配置 与 脚本 来构建一套高效的解决方案。其核心思路是识别微信或QQ内置浏览器,然后引导用户跳转至外部浏览器打开。

下面我将为你梳理几种核心方法,并提供具体的配置示例。

🛠️ Nginx防红方案核心配置

实现防红跳转,主要通过Nginx检测访问来源的User-Agent(用户代理)来实现。以下表格汇总了关键的配置方法和思路:

方法
核心配置/脚本思路
优点
注意事项
Nginx直接跳转
在Nginx配置中识别微信/QQ的User-Agent,直接返回跳转HTML代码
实现直接,性能好,无需依赖其他组件
跳转逻辑固定,不易定制复杂交互页面
Shell脚本动态封禁
使用Shell脚本分析Nginx日志,自动封禁(如返回403)访问频率过高的IP
有效应对CC攻击,减轻服务器压力
需要服务器权限,并配置定时任务
Referer防盗链
通过校验Referer字段,防止资源被其他网站非法盗用
保护网站资源,节省流量
主要用于防盗链,辅助增强安全性
防止恶意解析
配置默认server块,拒绝通过IP或未知域名对服务器的访问
提升服务器安全性,避免因恶意域名解析带来风险
基础安全配置,建议所有Nginx服务器都设置

🔍 关键配置详解

1. Nginx直接跳转法

这种方法通过判断User-Agent,直接在Nginx返回一个引导跳转的HTML页面。

  • 识别User-Agent:微信内置浏览器的标识通常包含MicroMessenger,QQ内置浏览器则包含QQ/MQQBrowser

  • 配置示例:将以下代码放入Nginx的server块中。它会在检测到来自微信或QQ的访问时,返回一个包含跳转提示和链接的页面。

if ($http_user_agent ~* "MicroMessenger|QQ/|MQQBrowser") {    # 防止重复跳转,可以检查Referer,但不是必须    add_header Content-Type "text/html; charset=utf-8";    return 200 'html><html><head>    <meta charset="UTF-8">    <title>请在浏览器打开title>    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <style>        body { font-family: Arial, sans-serif; text-align: center; padding50px; }        .btn { display: inline-block; padding10px 20pxbackground-color#007bffcolor: white; text-decoration: none; border-radius5pxmargin-top20px; }    style>head><body>    <h2>为获得完整体验h2>    <p>当前网页无法在微信/QQ内直接打开。p>    <p>请点击下方按钮,在浏览器中继续访问。p>    <a href="https://你的实际域名.com$request_uri" class="btn">在浏览器打开a>    


    
    <script>        window.location.href = 'https://你的实际域名.com$request_uri';    script>body>html>';    # 使用return 200确保能输出内容;也可考虑使用rewrite或直接proxy_pass}

注意:请将示例中的https://你的实际域名.com替换为你自己的真实域名。

2. Shell脚本动态封禁高频IP

此方法用于防御恶意爬虫或CC攻击,通过分析日志自动封禁异常IP。

以下是一个改进的脚本示例,它定期检查Nginx访问日志,将短时间内访问次数过多的IP加入黑名单。

#!/bin/bash# 配置文件路径LOG_FILE="/var/log/nginx/access.log" # 你的Nginx访问日志路径BAN_FILE="/etc/nginx/conf.d/ban.list" # 黑名单配置文件NGINX_CONTAINER="nginx" # 如果你的Nginx在Docker中,设置容器名;否则留空或删除相关行# 分析最近10000条日志,找出访问超过500次的IP(排除403状态)BAD_IPS=$(tail -n 10000 "$LOG_FILE" | awk '$9 != 403 {print $1}' | sort | uniq -c | sort -nr | awk '$1 > 500 {print $2}')if [ -z "$BAD_IPS" ]; then    echo "$(date): 没有发现超限IP。"    exit 0fi# 检查并添加新IP到黑名单ADDED_IPS=""for ip in $BAD_IPSdo    if ! grep -q "deny $ip;" "$BAN_FILE"then        echo "deny $ip;" >> "$BAN_FILE"        ADDED_IPS="$ADDED_IPS$ip\n"        echo "$(date): 已封禁IP: $ip"    fidone# 如果有新IP被封禁,重载Nginx配置if [ -n "$ADDED_IPS" ]; then    # 如果使用Docker    if [ -n "$NGINX_CONTAINER" ]; then        docker exec "$NGINX_CONTAINER" nginx -t && docker exec "$NGINX_CONTAINER" nginx -s reload    else    # 如果不使用Docker        nginx -t && nginx -s reload    fi    # 可以在这里集成邮件或钉钉、Telegram通知    echo -e "新增封禁IP:\n$ADDED_IPS" | mail -s "Nginx封禁警报" your-email@example.comfi
  • 使用方法

  1. 创建脚本文件,例如 ban_abusive_ips.sh

  2. 修改脚本中的路径等变量,使其符合你的服务器环境。

  3. 赋予脚本执行权限:chmod +x ban_abusive_ips.sh

  4. 设置定时任务(如Crontab),例如每10分钟执行一次:*/10 * * * * /path/to/ban_abusive_ips.sh

3. 增强安全与稳定性配置

  • 配置IP黑名单:在Nginx配置中引入上述脚本生成的ban.list文件。

# 在http或server块中引入黑名单include /etc/nginx/conf.d/ban.list;

防止恶意域名解析:添加一个默认server块,拒绝所有未知域名的访问。

💎 最佳实践与总结

要实现高效且稳定的域名防红,建议你将以上方法结合使用:

  1. 基础防红:采用 Nginx直接跳转法,在服务器层面直接引导微信/QQ用户使用浏览器打开。

  2. 防御攻击:部署 Shell脚本动态封禁,并设置Nginx的limit_req请求限制,保护服务器免受高频请求冲击。

  3. 安全加固:配置 防止恶意域名解析 和 Referer防盗链,提升整体安全性。

请记住,微信和QQ可能会更新其客户端的User-Agent字符串,需要定期检查并更新你的Nginx配置规则。

希望这些方案和配置能帮助你有效地解决问题。如果你在具体配置中遇到困难,可以告诉我你具体的服务器环境,我可以提供更细致的指导。

百度泛域名排名代做:10个域名起做,500个词(不限行业)48小时内出排名,详情联系TG:@SEOCNM

1、需要权重蜘蛛池和强引蜘蛛池点击=>>《千万级蜘蛛池出租》(可免费测试)联系微信:4652270、TG:@seocnm
2、新站(灰色词)秒排一对一陪跑变现培训招生(包教包会包上排名包工具,提供变现项目包赚钱一对一陪跑)!微信:4652270、TG:@seocnm(白嫖党与伸手党勿扰)
3、谷歌SEO实战培训目前已正式上线!黑帽+白帽+变现+算法+AI,目前培训课程价格为5998元(一对一实战辅导),每天前三名的学员学员赠送谷歌蜘蛛池搭建程序+泛目录程序,SEOVIP学员推荐可优惠500元,原SEOVIP学员报名谷歌SEO培训亦优惠500元

4、微信搜一搜排名优化课程目前已上线!课程涵盖公众号、小程序、视频号排名技巧,培训价格为2800元(一对一辅导,服务周期:1年)

5、《GEO实战培训(终极版)2.0》课程正式上线!课程分基础和实战两部分,基础部分告诉大家有关AI大模型及GEO知识,实战部分讲述GEO实战及数据分析等。培训价格为2980元!报名微信:4652270、TG:@seocnm

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/187498