我使用vue集成QQ第三方登录,例如我的回调是 http://qwe.cn,我在nginx配置了 监听这个域名80端口,重定向到 2589端口,并在2589端口配置了证书。
现在遇到的问题是:第一次使用回调是正常的,可以正常跳转到 2589端口,但是第二次只会跳转到 https://qwe.cn ,如果清除缓存以后 也是第一次正常,后面不行 有老大可以帮忙解决下吗
浏览器缓存导致nginx重定向失败
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
针对您的问题,看起来是由于浏览器缓存了最初的重定向路径。为了解决这个问题,您可以尝试以下几个步骤:
- 添加HTTP头部信息来禁用缓存:
在Nginx配置文件中,为重定向的URL添加
Cache-Control和Pragma头信息,告诉浏览器不缓存这些响应。这可以通过设置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; } }- 使用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的时间戳参数,确保每次请求都是独一无二的。- 配置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服务以应用更改,并测试是否有效。如果有任何疑问或需要进一步的帮助,请随时提问。
解决 无用评论 打赏 举报 编辑记录- 添加HTTP头部信息来禁用缓存:
在Nginx配置文件中,为重定向的URL添加