关于nginx:解决nginx-反向代码-apache服务下的wordpress发生301循环重定向的问题

在应用nginx反向代码wordpress的过程中,因为wordpress会对拜访的申请进行域名与端口是否与配置信息雷同的判断,将导致应用301的循环重定向谬误。

问题重现

nginx配置如下:

server {                    
    listen       81;        
    server_name  www.baeldung.cn;
    error_log /mengyunzhi/log/baeldung.cn-nginx.log info;
                            
    add_header Cache-Control public;
                            
    location / {            
        proxy_pass      http://127.0.0.1:8000;
        proxy_redirect off; 
                            
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # 转发host信息
        proxy_set_header Host $host;

wordpress设置站点的url地址为:http://www.baeldung.cn:81

则在上述两个配置下应用浏览器拜访:http://www.baeldung.cn:81则会执行如下流程:

问题在于:nginx在进行数据发设置的Host并不蕴含端口信息,所以wordpress接管到的申请是:http://www.baeldung.cn:8000此地址与http://www.baeldung.cn:81并不相同,所以给出了重定向的回复。浏览器接管到重定向,接着发动了对http://www.baeldung.cn:81的申请,周而复始浏览器便出了301重定向次数过多的提醒。

解决方案

google尝试找了些对于nginx如何反向代理wordpress或nginx反向代码wordpress产生301 loop的问题,但并未找到答案。猜测可能是因为 wordpress这个重定向机制启用的工夫并不长,所以相干的问题裸露的不多造成的。

通过后面的流程图,最终猜测出了解决方案:转发时设置Host时退出端口号:

 proxy_set_header Host $host:$server_port;

从新加载nginx配置后问题迎刃而解。

总结

当一些问题查找不出起因的时候,须要联合控制台返回的信息并站在软件设计者的角度大胆地猜想一下。一旦猜出了方向,便能够依照猜的方向进行尝试。没准就真猜对了呢。

本文作者:河北工业大学梦云智开发团队 潘杰

欢送各位学子报考我校!

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据