各位技術大佬,大家好,我是練習時長兩年半的代碼練習生,Max,喜歡技術,后端和架構,
問題介紹
專案配置了多個域名,如下,php 代碼中有獲取 $_SERVER['SERVER_NAME'] 的值,
server {
server_name a.demo.com b.demo.com;
...
}
當訪問 a.demo.com 時,其獲取的值是符合預期的,但是當訪問 b.demo.com 時,其獲取的值還是 a.demo.com,導致代碼中的判斷出現錯誤,
問題分析
當 nginx 的一個 server 節點下,server_name 配置多個域名時,$server_name 變數的值是配置的第一個域名,結合上面我們的配置,此時我們的 $server_name 值為 a.demo.com,
解決方案
- 方案 1,將多個域名配置在不同的 server 段下(推薦),
例如上面的配置,可以改成如下:
server {
server_name a.demo.com;
...
}
server {
server_name b.demo.com;
...
}
- 方案 2,修改 nginx 的 SERVER_NAME 值,使用 $host 變數,
# 默認
fastcgi_param SERVER_NAME $server_name;
# 修改為
fastcgi_param SERVER_NAME $host;
今天的坑就踩到這,改天我們接著踩,
更多技術文章,請關注我的個人博客 www.immaxfang.com 和小公眾號
Max的技術札記,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/543598.html
標籤:PHP
