解决网站因重定向次数过多无法访问的方法

博客的 SSL 证书快过期了,正好有空就给换了一下,结果就因为换了个证书网站无法访问了,提示重定向次数过多,看了一下请求好多个 301 请求

先检查一下 Nginx 的配置,看了一下没什么问题啊,之前一直是这样的,就是换了个证书 怎么会重定向那么多次呢

关掉 HTTPS 访问,因为加入了 HSTS,所以直接 307 到 HTTPS了,证明 80 端口是没有问题的

删掉所有的 301 重定向配置再试一下,结果还是有问题

在配置文件中加一个错误日志看看

error_log /www/wwwlogs/qq52o_error.log notice;

运行一下网站,去看一下错误日志是空的

这里还是要忍不住吐槽一下宝塔,真辣鸡,软件管理中的各软件设置居然不能点击了,控制台报错

Uncaught TypeError: bt.soft.set_soft_config is not a function at HTMLAnchorElement.onclick 

行吧,可视化操作不让我用,我用命令行呗,连接服务器,执行如下命令

/etc/init.d/nginx configtest

测试一下这个配置有什么问题,这下终于有提示了

[root@qq52o ~]# /etc/init.d/nginx configtest 
Test nginx configure files... 
nginx: [warn] conflicting server name "qq52o.me" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "www.qq52o.me" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "qq52o.cn" on 0.0.0.0:80, ignored
nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /www/server/nginx/conf/nginx.conf test is successful

意思是重复绑定了server name,但这个警告不会影响到服务器运行

我的配置文件确实是两个server配置,发现第一个server中还有一个 301 的重定向

server {
    listen 80;
    listen 443 ssl http2;
    server_name qq52o.me www.qq52o.me qq52o.cn;
    return 301 https://qq52o.me$request_uri;
}

server {
    server_name qq52o.me www.qq52o.me qq52o.cn;
    # 以下忽略

之前这样也没什么问题,现在感觉有点多余,把第二个server和第一个server进行合并,去掉 301 和多余的server_name

重载 Nginx 服务以后访问就正常了,尴尬,配置坑死人

这个跟我之前遇到情况一样,生成分页多加了一个/,导致直接缺省协议了

比如正常的分页是/crm/list/?page=2,缺省协议以后//crm/list/?page=2

正常分页访问的是域名加上这个/crm/list/?page=2,而缺省协议会直接访问http://crm/list/?page=2,导致分页出错

刚开始我以为是方法的问题,结果后来让大佬找了一下,告诉我是 Nginx 配置的问题,反向代理的时候多了一个/

就说这些,多检查配置基本上不会有多大问题

6 条评论

发表评论

*