Nginx

nginx 不在蜂窩數據連接上為站點提供服務

  • December 1, 2016

我有一個執行 nginx 的網路伺服器。如果我通過 wifi 連接訪問該網站,它會載入該網站。如果我在手機上使用 LTE 訪問它,它只會顯示預設的“歡迎使用 nginx!” 頁

這是我的站點配置文件:

server {
   listen 80;
   listen 443 ssl;
   server_name {mysite.com};

   root   /path/to/public;
   index  index.php index.html index.htm;

   location / {
       try_files $uri $uri/ /index.php$is_args$args;
       include   /etc/nginx/conf.d/php-fpm;
   }

   ssl_certificate /etc/letsencrypt/live/{mysite.com}/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/{mysite.com}/privkey.pem;
}

“歡迎”讓我懷疑 nginx 沒有讀取Host請求中的標頭,並且響應是預設的虛擬主機定義(即歡迎消息)。

刪除您的預設虛擬主機,在 debian 上應該是:

rm /etc/nginx/sites-enabled/default

然後添加default_server到您的站點虛擬主機定義:

listen 80 default_server;
listen 443 ssl default_server;

重新載入:nginx -s reload

用 curl 測試:

curl -H "Host: mysite.com" mysite.com
curl mysite.com

第一個請求發送主機頭,第二個沒有。兩者都應該返回相同的結果,因為 mysite.com 現在是埠 80 和 443 的預設值(一個 default_server 埠)。

這就像一種蠻力方法,更聰明的方法是調試請求,如果一切設置正確,這不應該發生。

引用自:https://serverfault.com/questions/818004