nginx $ server_name始终是localhost

时间:2014-03-03 21:16:08

标签: nginx amazon-ec2 localhost server-name

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

但是我发现即使我在浏览器中输入myapp.mydomain.com,它也会加载default.conf。我已更改log_format文件中的nginx.conf添加"$server_name"字段以检查每个请求的服务器名称。我发现它总是localhost

有人对此有任何想法吗?

使用配置信息进行更新

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内置的安全组

2 个答案:

答案 0 :(得分:1)

similar problem的人通过以下方式解决了问题:

  

我现在已经解决了这个问题,万一有人遇到和我一样的问题   与“server_names_hash_bucket_size 64;”中的关系   /etc/nginx/nginx.conf.

     

该行默认已注释掉,因此我取消注释并重新启动   nginx现在工作正常。

答案 1 :(得分:0)

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

尝试将此添加到/ etc / hosts文件中:

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

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