Nginx显示IP地址而非域名

5

我有一个指向我的Digital Ocean IP地址的godaddy A记录。

以下是nginx配置。

server {
    listen 80 default_server;
    server_name domain.com www.domain.com;
    location / {
       proxy_pass 'http://127.0.0.1:3004';
    }
}

当我输入 domain.com 后,它会转到服务器,但地址栏显示 IP 地址。

如何让它显示域名?


完全相同的配置...同样的问题。你找到解决方法了吗? - Chris
抱歉,我真的不记得了。我觉得它以某种方式解决了。 - Ivan
3个回答

2

很可能是从proxy_pass重定向过来的。我不确定你在后端运行的是什么,但你可以尝试传递主机名。

proxy_set_header Host      $host;

在 proxy_pass 后面添加这一行,以告知后端请求头中的域名信息。

我正在使用Node Express。你的建议不起作用。 - Ivan
你应该追踪哪个部分进行了重定向。 - Ahmet

0
这个问题是由Godaddy的默认转发配置引起的。你必须与他们的支持团队联系,进行必要的更改。这就是我解决与他们相同问题的方法。

0

重定向到 IP 地址 很有可能 是由你的后端在 proxy_pass 中完成的。你可以尝试添加一些头信息来帮助后端了解请求的上下文。

我建议作为入门配置如下:

server {
    listen 80 default_server;
    server_name domain.com www.domain.com;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;


    location / {
       proxy_pass 'http://127.0.0.1:3004';
    }
}

如果使用 Node.JS,您可能也需要以下代码行:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';

请同时检查您后端的配置。您可能需要设置访问URL、上下文路径等。

1
感谢您的回复。不幸的是,这似乎不起作用。 - Ivan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接