nginx多个域总是给第一个域

我需要使用一个NGINX实例来支持多个域,但总是第一个列出的域抓取请求。

例如,我有如下。 但是,当客户端请求beta.com时,nginx服务器会回应alpha.com页面。

哦,我已经阅读了其他类似的post,并试图取消注释

server_names_hash_bucket_size 64; 

但它没有帮助。

 cd /etc/nginx # ls sites-enabled alpha -> /etc/nginx/sites-available/alpha beta -> /etc/nginx/sites-available/beta # cat sites-available/alpha server { listen 80; #listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html/alpha; index index.html index.htm; server_name alpha.com *.alpha.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } } # cat sites-available/beta server { listen 80; #listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html/beta; index index.html index.htm; server_name beta.com *.beta.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } } 

只要有未来的人可能来到这里,如果他们在search结果中得到这个链接:

有两种情况可能导致这种情况,它们都是Nginxconfiguration。

首先,如果您的任何一个已启用的站点启用了IPv6侦听,而其他站点却不启用,则您的系统可能会默认尝试IPv6,并且可以启动。 奇怪的行为,但似乎是这样的情况下,当我进行故障排除和具体testing。

第二个是你的访问日志可能告诉你,堆或桶大小不足以创build一个散列。 这意味着Nginx不能build立一个合适的“这个域名映射到这个服务器块”。 尝试增加堆大小(默认情况下通常为2048,testing我把它加倍到4096)和桶大小(默认情况下通常是64,testing我加倍到128)。

确保所有的服务器块都有一个监听语句或删除它,以及在本地开发环境中为我调整堆和桶的大小。

检查access.log以查看是否可以发现问题。