nginx显示IP地址而不是域

时间:2020-05-01 22:21:25

标签: nginx dns

我有一个Godaddy A记录,指向我的Digital Ocean 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地址。

如何显示域名?

2 个答案:

答案 0 :(得分:2)

最有可能是proxy_pass的重定向。我不确定您在后端运行什么,但是您可以尝试传递主机名。

proxy_set_header Host      $host;

在proxy_pass之后添加此行,以告知后端请求标头中的域。

答案 1 :(得分:0)

由您的后端在proxy_pass中完成重定向到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,上下文路径等。