Nginx

子域的 Nginx 衝突伺服器名稱

  • September 26, 2021

我目前在 Nginx 上為 foo.domain.com 執行了一個虛擬主機,一切正常。

我為要添加的名為 bar.domain.com 的新子域創建了一個新文件。我對兩者使用相同的設置。

當我重新啟動 Nginx 我得到

Restarting nginx: nginx: [warn] conflicting server name "" on 0.0.0.0:443, ignored nginx.

當我轉到 bar.domain.com 時,我看到了我應該看到的內容,但是當我轉到 foo.domain.com 時,我看到了 bar.domain.com 連結到的頁面。

upstream php-handler {
   server unix:/var/run/php5-fpm.sock;
}

server {
       listen 80;
       server_name foo.domain.com;
       return 301 https://$server_name$request_uri;
}

server {
       listen 443;

       ssl on;
       ssl_certificate      [path_foo]/cacert.pem;
       ssl_certificate_key  [path_foo]/privkey.pem;

       root [path]/foo;

       ...
}

酒吧

server {
       listen 80;
       server_name bar.domain.com;
       return 301 https://$server_name$request_uri;
}

server {
       listen 443;

       ssl on;
       ssl_certificate      [path_bar]/cacert.pem;
       ssl_certificate_key  [path_bar]/privkey.pem;

       root [path]/bar;
}

我哪裡錯了?

在我看來,您的 https 塊也需要指定伺服器名稱,例如

server {
   listen 443;
   server_name bar.domain.com;
   ssl on;
   ssl_certificate      [path_bar]/cacert.pem;
   ssl_certificate_key  [path_bar]/privkey.pem;

   root [path]/bar;
}

您可能還有其他文件/etc/nginx/sites-available/<site-name>連結到/etc/nginx/sites-enabled/<site-name>.

這些文件中的設置可能與文件/etc/nginx/sites-available/default衝突

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