[文章作者:张宴 本文版本:v1.0 最后修改:2008.11.28 转载请注明原文链接:http://blog.s135.com/post/382/]

  今天在配置Nginx + PHP + MediaWiki中,发现一个问题:MediaWiki所在的Nginx虚拟主机绑定了多个域名,但是不管通过什么域名访问MediaWiki首页,都会被跳转到其中的一个域名上。Nginx配置文件中没有相关的rewrite跳转规则,那么就应该是MediaWiki的PHP程序做的跳转,但是,遍历了MediaWiki目录下的所有文件以及查询了MySQL数据库中的每个表,都没有发现记录有这个域名。后来,通过查看源代码发现MediaWiki是根据$_SERVER['SERVER_NAME']做的跳转,顺藤摸瓜,发现了下列问题:

  在一个Nginx虚拟主机中,可以绑定多个server_name,例如:
  点击在新窗口中浏览此图片

  而server_name的先后顺序的不同,对PHP程序中使用$_SERVER["SERVER_NAME"]或getenv('SERVER_NAME')获取服务器域名是有影响的:
  点击在新窗口中浏览此图片

  点击在新窗口中浏览此图片

  $_SERVER["SERVER_NAME"]或getenv('SERVER_NAME')获取的始终将是Nginx server_name配置中的第一个域名,这一点在程序开发中需要注意。这第一个域名就相当于Apache虚拟主机配置中的ServerName,后面的域名就相当于Apache的ServerAlias。


Tags: ,
技术大类 » Web服务器 | 评论(8) | 引用(0) | 阅读(5355)
lihaixin Homepage
2008-11-28 22:35
关注nginx,关注张宴!
jack Homepage
2008-11-30 01:57
关注张宴的博客,关注张宴的技术文章
envy
yak
2008-12-1 14:05
nginx 如何自定义日志 比如图请求,js,css请示不记录
CELL
2008-12-13 13:56
用 $_SERVER["HTTP_HOST"] 就可以了
sheaven Email Homepage
2009-1-16 13:04
这个问题或许可以在server{}里面添加 server_name_in_redirect  off; 来解决
sim
2009-3-26 15:33
张兄 关于nginx想请教下 我在装了nginx后编译安装php 大多参数能编译上 但是有几条参数怎么也编译不上

Notice: Following unknown configure options were used:
--with-zip
--enable-url-inclubes
--enable-versioning
--enable-trace-vars

是不是nginx不支持这4条php编译参数? 还是需要用别的方法? 请指教啊
VPS主机 Homepage
2009-4-16 16:46
关注张宴的博客··
crystal Homepage
2009-4-16 16:47
张宴只写技术性的文章吗?
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]