3

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

但是我发现即使我myapp.mydomain.com在浏览器中输入,它总是会加载default.conf. 我已经更改了log_formatnginx.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 内置安全组

4

2 回答 2

1

类似问题的人通过以下方式解决了它:

我现在已经解决了这个问题,以防有人遇到和我一样的问题,这与 " server_names_hash_bucket_size 64;" in /etc/nginx/nginx.conf.

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

于 2014-03-04T07:39:56.270 回答
0

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

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

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

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

于 2014-03-04T00:00:41.700 回答