php - nginx "server"指令具有多个 "server_name"条目 : always first one is passed to PHP's $_SERVER ['SERVER_NAME' ]

标签 php nginx configuration fastcgi

我的配置文件有一个以...开头的server指令 block

server {
    server_name www.example1.com www.example2.com www.example3.com;

...为了让网站可以用不同的域名访问。

但是 PHP 的 $_SERVER['SERVER_NAME'] 总是返回 server_name 的第一个条目,在本例中为 http://www.example1.com

所以我无法从 PHP 代码知道用户使用哪个域访问该站点。

有什么办法可以让nginx/fastcgi传递访问站点的真实域名吗?


到目前为止,我找到的唯一解决方案是为每个域重复整个 server block ,并使用不同的 server_name 条目,但显然我正在寻找更好的方法一个。

最佳答案

fastcgi_params 配置中设置 SERVER_NAME 以使用 $host

fastcgi_param   SERVER_NAME         $host;

来源:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_param

关于php - nginx "server"指令具有多个 "server_name"条目 : always first one is passed to PHP's $_SERVER ['SERVER_NAME' ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31479341/

相关文章:

symfony - Symfony 4.2 中没有根节点的树构建器

php - cURL 使用来自 mySQL 的信息,然后存储 cURL 的信息

php - 如何在 PHP 中显示最近 10 个月的列表?

php - 哪个时区使用 cpanel 进行 cron 作业?

php - 将 commit 设置为 false 后获取最后插入的 id

php - 在 Nginx 上安装 wordpress - Nginx 发送 install.php

nginx - Kohana 似乎不适用于 NGiNX

java - 如何在 Android 应用程序中一次更改所有 Activity 转换?

ssl - 将 SSL 重定向到另一个 SSL

c++ - 为我的 Visual Studio C++ 项目配置目标平台