【问题标题】:nginx $server_name is always localhostnginx $server_name 始终是 localhost
【发布时间】:2014-03-03 21:16:08
【问题描述】:

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

但是我发现即使我在浏览器中输入myapp.mydomain.com,它总是会加载default.conf。我已经更改了nginx.conf 文件中的log_format,添加了一个"$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 内置的安全组

【问题讨论】:

  • 能否请您发布配置 - 确认它不在代理后面?
  • 我唯一能想到的可能是您尝试访问www 站点,而您只定义了一个没有在 nginx conf 中的站点,是这样吗?,请尝试附加 @987654337服务器名称中的 @ 替代项(如果适用)。

标签: nginx amazon-ec2 localhost server-name


【解决方案1】:

有similar problem 的人通过以下方式修复了它:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • AWS ec2 实例上没有运行 nginx。浏览器在我的笔记本电脑上
    • 那你为什么需要 localhost 呢?
    • 您没有在 localhost 上运行默认值。如果你是,它会有listen 127.0.0.1:80;。我假设 server_name 上缺少的分号在复制时丢失了,但您应该检查是否有任何拼写错误。
    • 这是我在 SO 上的错字(现在已修复)。不是 nginx conf 文件中的错字,否则 nginx 将无法启动。
    猜你喜欢
    • 2020-07-22
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多