奔跑的菜鸟Run 2024-04-12 01:01 采纳率: 0%
浏览 5

浏览器缓存导致nginx重定向失败

我使用vue集成QQ第三方登录,例如我的回调是 http://qwe.cn,我在nginx配置了 监听这个域名80端口,重定向到 2589端口,并在2589端口配置了证书。
现在遇到的问题是:第一次使用回调是正常的,可以正常跳转到 2589端口,但是第二次只会跳转到 https://qwe.cn ,如果清除缓存以后 也是第一次正常,后面不行 有老大可以帮忙解决下吗

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-12 01:01
    关注

    引自免费微信小程序:皆我百晓生

    针对您的问题,看起来是由于浏览器缓存了最初的重定向路径。为了解决这个问题,您可以尝试以下几个步骤:

    1. 添加HTTP头部信息来禁用缓存: 在Nginx配置文件中,为重定向的URL添加Cache-ControlPragma头信息,告诉浏览器不缓存这些响应。这可以通过设置location块中的add_header指令实现。以下是示例代码:
    server {
        listen 80;
        server_name qwe.cn;
    
        location / {
            add_header Cache-Control "no-cache, no-store, must-revalidate";
            add_header Pragma "no-cache";
            add_header Expires "0";
    
            proxy_pass http://localhost:2589;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    
    1. 使用URL查询参数: 另一个方法是在重定向URL后添加一个随机的查询参数,这样每次请求都会因为参数不同而被认为是新的请求。可以在Vue应用中动态生成一个时间戳作为参数,或者在Nginx配置中添加一个伪静态变量。以下是Nginx配置示例:
    server {
        listen 80;
        server_name qwe.cn;
    
        location / {
            if ($request_uri ~ "^/qq-login$") {
                set $timestamp $(date +%s);
                rewrite ^(.*)$ https://qwe.cn:$scheme:$port/$1?nocache=$timestamp permanent;
            }
    
            proxy_pass http://localhost:2589;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    

    在这个例子中,当访问/qq-login时,会添加一个名为nocache的时间戳参数,确保每次请求都是独一无二的。

    1. 配置SSL: 确保在Nginx的2589端口上正确配置了SSL证书,以便在重定向之后也能进行安全通信。您可能需要在2589端口的location块中指定证书和密钥文件,例如:
    server {
        listen 2589 ssl;
        server_name localhost;
    
        ssl_certificate /path/to/your/certificate.pem;
        ssl_certificate_key /path/to/your/private.key;
    
        # ...其他SSL相关配置...
    
        location / {
            # ...其他代理配置...
        }
    }
    

    请将上述代码中的/path/to/your/certificate.pem/path/to/your/private.key替换为您实际的证书和私钥文件路径。

    完成以上步骤后,应该能解决因浏览器缓存导致的重定向问题。请重启Nginx服务以应用更改,并测试是否有效。如果有任何疑问或需要进一步的帮助,请随时提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月12日

悬赏问题

  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析
  • ¥100 我想找人帮我写Python 的股票分析代码,有意请加mathtao
  • ¥20 Vite 打包的 Vue3 组件库,图标无法显示
  • ¥15 php 同步电商平台多个店铺增量订单和订单状态
  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题