我有一个在AWS EC2实例上运行的nginx 1.4.5服务器。 我有两个conf文件: default.conf
和myapp.conf
。 default.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
可能会解析为localhost
或127.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,现在它工作正常。