新版本Nginx导致WordPress Drupal框架无限重定向解决方案

2013年02月02日 Wordpress 评论 1 条 阅读 6,834 views 次

服务器配置是前端用Nginx,后端用Apache解析PHP。
从老版本的Nginx升级到新版本(>1.0)以后,发现Wordpress建立的站点都出现无限循环重定向问题。Google搜索,发现很多人遇到这个问题,并不是单纯Wordpress,Drupal, PHPCake等框架也都遇到同样的问题。
wordpress的解决方案是 安装禁止重定向的插件就可以了,但是缺陷是,这样会不利于SEO。并且这个解决方案不是对各个框架的通用解决方案,如果不搞清楚问题的原因,其他网站遇到同样的问题怎么办?可惜经过搜索,遇到这个问题的讨论都没有揭露最终的原因。还是决定自己跟踪Wordpress的源代码,看看问题究竟出在哪里。 为什么老版本的Nginx没有问题,新版本的就出现了这个问题?

跟踪wp-includes/canonical.php的代码,会发现,当使用新版本Nginx的时候,访问网站主页http://www.nginx.com.cn/的时候,在Apache这端收到的请求是 http://www.nginx.com.cn/index.php。而当使用老版本Nginx的时候,Apache端收到的请求是 http://www.nginx.com.cn/。也就是说,新版本的Nginx在收到 http://www.nginx.com.cn/请求以后,发送给后台的Apache之前,在后面自动追加了 index.php,导致与原来的请求URL不同,所以造成很多web框架重定向。

解决方案是:
在配置Nginx服务器的时候,注意单独配置location = / 这一项。

server {
listen 80;
server_name nginx.com.cn, www.nginx.com.cn;

//!!! 注意这里,重点配置这里的代理规则
location = / {
proxy_pass	http://127.0.0.1:81/; // !!! 这一这里,最后面有个/不能省略
include	/etc/nginx/proxy.conf;
}
location ~ \.php$ {
proxy_pass http://127.0.0.1:81; //!!! 这里,最后面没有/
include /etc/nginx/proxy.conf;
}

……
}

 

本文转自:http://www.nginx.com.cn/?p=358

1 条留言  访客:1 条  博主:0 条

  1. avatar xiaobai282

    学习了!

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录