You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Nginx根据用户页面访问次数返回不同页面内容

Nginx按用户访问次数返回差异化页面配置方案

核心实现逻辑无需依赖额外后端服务,基于Nginx原生的Cookie读取、重写规则即可完成,针对site.com/page路径的访问规则为:首次访问返回page1.html,第二次及后续访问返回page2.html。

完整配置示例

调整对应站点的server块配置,注意替换静态文件路径为你实际的部署路径:

server {
    listen 80;
    server_name site.com;
    # 替换为你本地存放page1.html、page2.html的实际根目录
    root /your/static/file/path;

    # 读取客户端存储的访问次数Cookie,非法值/不存在时默认计数为0
    map $cookie_page_visit_cnt $page_visit_count {
        default 0;
        ~^\d+$ $cookie_page_visit_cnt;
    }

    # 精准匹配/page路径
    location = /page {
        # 首次访问分支:计数为0,返回page1,同时更新Cookie计数为1
        if ($page_visit_count = 0) {
            # Cookie有效期默认设为1天,可按需调整Max-Age值(单位秒)
            add_header Set-Cookie "page_visit_cnt=1;Path=/page;Max-Age=86400;SameSite=Lax";
            rewrite ^ /page1.html break;
        }
        # 第二次及后续访问分支:计数大于等于1,返回page2
        if ($page_visit_count >= 1) {
            rewrite ^ /page2.html break;
        }
    }

    # 静态html文件访问规则
    location ~ \.html$ {
        try_files $uri =404;
    }
}
配置说明&注意事项
  • 该方案为轻量实现,基于客户端Cookie做访问计数,若用户清空浏览器Cookie、使用隐身模式/更换设备访问,会被重新识别为首次访问,适合对计数精度要求不高的展示场景
  • 若需要更高精度的计数(比如跨设备识别、防用户清Cookie作弊),需要搭配后端存储用户访问日志,通过Nginx的auth_request模块对接后端接口获取用户真实访问次数后再做页面跳转,部署复杂度会明显提升
  • 若重载配置时提示map directive is not allowed here错误,把map $cookie_page_visit_cnt $page_visit_count{...}这段配置移动到对应server块外层的http块中即可
  • 配置修改完成后,先执行nginx -t校验配置语法是否正确,确认无报错后执行nginx -s reload重载配置即可生效
  • 如果需要扩展更多访问次数对应的展示页面,直接在location块里新增$page_visit_count的判断分支即可,比如第三次访问展示page3.html,新增对应if判断规则即可

内容的提问来源于stack exchange,提问作者Nme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 10:15:38