使用Nginx从一台服务器提供两个站点

我有一个Rails应用程序,并在我的服务器上运行,现在我想添加另一个。

我希望Nginx检查请求是什么,并根据域名拆分stream量

这两个站点有自己的nginx.conf符号链接到网站启用,但我得到一个错误开始nginx Starting nginx: nginx: [emerg] duplicate listen options for 0.0.0.0:80 in /etc/nginx/sites-enabled/bubbles:6

他们都在80听,但不同的事情。

站点#1

 upstream blog_unicorn { server unix:/tmp/unicorn.blog.sock fail_timeout=0; } server { listen 80 default deferred; server_name walrus.com www.walrus.com; root /home/deployer/apps/blog/current/public; location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; } try_files $uri/index.html $uri @blog_unicorn; location @blog_unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://blog_unicorn; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; } 

网站二:

 upstream bubbles_unicorn { server unix:/tmp/unicorn.bubbles.sock fail_timeout=0; } server { listen 80 default deferred; server_name bubbles.com www.bubbles.com; root /home/deployer/apps/bubbles/current/public; location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; } try_files $uri/index.html $uri @bubbles_unicorn; location @bubbles_unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://bubbles_unicorn; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; } 

该文件说:

如果存在default_server参数,将使服务器成为指定地址:端口对的默认服务器。

也很明显,只能有一个默认的服务器。

而且它也说:

listen指令可以有多个特定于与套接字相关的系统调用的附加参数。 它们可以在任何listen指令中指定,但对于给定的地址:端口对只能指定一次。

所以,你应该删除default并从listen 80指令之一中deferred 。 同样适用于ipv6only=on指令。

只是碰到同样的问题,但重复的default_server指令不是唯一的原因,如果这个消息。

您只能在其中一个server_name指令中使用backlog参数。

网站1:

 server { listen 80 default_server backlog=2048; server_name www.example.com; location / { proxy_pass http://www_server; } 

网站2:

 server { listen 80; ## NOT NOT DUPLICATE THESE SETTINGS 'default_server backlog=2048;' server_name blogs.example.com; location / { proxy_pass http://blog_server; }