显示IP地址而不是域的nginx

显示IP地址而不是域的nginx,nginx,dns,Nginx,Dns,我有一个godaddy a记录指向我的数字海洋IP地址 这是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地址 它如何显示域名?它很可能是来自proxy\u p

我有一个godaddy a记录指向我的数字海洋IP地址

这是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地址


它如何显示域名?

它很可能是来自proxy\u pass的重定向。我不确定您在后端运行的是什么,但您可以尝试传递主机名

proxy_set_header Host      $host;

在代理传递之后添加这一行,告诉后端哪个域在请求头中。

重定向到IP地址很可能是由后端在代理传递中完成的。。 您可以尝试添加一些头来帮助后端理解请求的上下文

我推荐以下配置作为启动程序:

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、上下文路径等。

我正在使用node express。您的建议无效。您应该跟踪哪个部分执行重定向。感谢您的回复。遗憾的是,这似乎不起作用。相同的配置完全相同…相同的问题。你找到解决办法了吗?对不起,我真的不记得了。我想它自己解决了。