Nginx与子域的服务器名称冲突

我目前有一个运行在foo.domain.com的Nginx的虚拟主机,一切都很好。

我为我想添加的一个新的子域创build了一个名为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-enabled/<site-name>可能还有其他文件,它们链接到/etc/nginx/sites-enabled/<site-name>

这些文件中的设置可能会与/etc/nginx/sites-available/default文件冲突

我有一个类似的问题,当我不小心有重复的服务器名称:

 server_name myserver.example.com myserver.example.com; 

修改为:

 server_name myserver.example.com;