nginx $ server_name始终是localhost

我有一个在AWS EC2实例上运行的nginx 1.4.5服务器。 我有两个conf文件: default.confmyapp.confdefault.conf监听localhost, myapp.conf监听myapp.mydomain.com

但是,我发现即使我在浏览器中inputmyapp.mydomain.com ,它总是加载default.conf 。 我已经在nginx.conf文件中更改了log_format ,添加一个"$server_name"字段来检查每个请求的服务器名称。 我发现它始终是localhost

任何人有这个想法吗?

更新与configuration信息

nginx.conf

 server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } ... } 

myapp.conf

  server { listen 80; server_name myapp.mydomain.com; access_log /var/log/nginx/myapp.log; location / { add_header P3P 'CP="CAO PSA OUR"'; proxy_pass http://127.0.0.1:8080/myapp/; set $ssl off; if ($scheme = https) { set $ssl on; } proxy_set_header X-Forwarded-Ssl $ssl; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } } 

是的,我支持两个防火墙,一个是iptable,另一个是AWS安全组

我假设你在同一台机器上运行浏览器和nginx。 在这种情况下, myapp.mydomain.com可能会解析为localhost127.0.0.1因此nginx认为它会去localhost。

尝试添加到您的/ etc / hosts文件:

 <external IP of your host> myapp.mydomain.com 

您还应该尝试从另一台机器访问您的nginx服务器。

有类似问题的人通过以下方式修复:

我现在已经解决了这个问题,以防万一和我有同样的问题,就是在/etc/nginx/nginx.conf.使用“ server_names_hash_bucket_size 64;/etc/nginx/nginx.conf.

该行默认已被注释掉,所以我取消注释并重新启动了nginx,现在它工作正常。