nginx多域名环境$_SERVER["SERVER_NAME"]无法获取主机名

更新时间:2022-08-21 17:48:07 来源:青锋建站 作者:青锋建站
  在使用nginx构建网站环境时时,当nginx里的server_name配置了多个域名的时候,发现$_SERVER["SERVER_NAME"]获取的域名是第一个而不是当前的子域。在多域名环境下,这样会不利于程序功能的运行。以下是青锋建站给大家分享的多域名环境$_SERVER["SERVER_NAME"]如何获取子域名。

$_SERVER["SERVER_NAME"]获取不到主机名原因分析

  究其原因是$_SERVER[“SERVER_NAME”] 返回的值是由 Nginx 的 fastcgi_param 中 SERVER_NAME 提供的,而默认的配置为:fastcgi_param  SERVER_NAME    $server_name;
Nginx中 $server_name 变量就是上面设置的域名,只会返回第一个!

解决方法

将fastcgi_param  SERVER_NAME    $server_name修改为
fastcgi_param  SERVER_NAME    $host;
另外还需要在server_name配置后面加一行:
server_name_in_redirect off;
意思是 让 nginx 在处理自己内部重定向时不默认使用 server_name 设置中的第一个域名!
$_SERVER['SERVER_NAME']; 如果有域名返回域名,没有域名返回IP地址。
  以上就是青锋建站给大家分享的多域名环境$_SERVER["SERVER_NAME"]无法获取主机名的原因以及解决办法。青锋建站,提供专业的高品质网站制作服务,包括网站建设服务,SEO,网络营销,PHP开发,网站建设知名品牌,全国接单,专业做优化型网站,为企业构建营销平台。 

转载请注明来源网址:青锋建站-http://www.sjzphp.com/webdis/server_name_1438.html

电话 15632335515 | 邮箱 943703539@qq.com | QQ 943703539 | 微信 qingfengjianzhan

Copyright © 2016-2026 青锋建站 版权所有