You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置问题:无法显示域名而非服务器IP地址

解决Nginx反向代理后地址栏显示服务器IP而非域名的问题

嘿,我看你遇到的问题主要是Nginx配置里的几个关键点没到位,再加上可能后端服务的小细节没注意。咱们一步步来修复:

1. 先把Nginx的server_name改对

你现在用的server_name _;是默认匹配所有请求的通配符,这会让Nginx没法精准识别你的域名请求,后端拿到的Host信息也可能不对。直接把它换成你的实际域名就行,比如:

server {
    keepalive_timeout 30;
    listen server_ip:443 ssl;
    ssl_certificate /tmp/mycrt.crt;
    ssl_certificate_key /tmp/mykey.key;
    ssl_session_cache shared:SSL:10m;
    # 这里建议把老旧的TLS版本去掉,只留TLSv1.2和TLSv1.3更安全
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_timeout 10m;
    # 替换成你的域名,带www的也加上,避免漏匹配
    server_name mydomain.com www.mydomain.com;

    location / {
        proxy_pass http://server_ip:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        # 这两个头可选,但加上能让后端拿到真实客户端IP和协议类型
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}

2. 加上HTTP转HTTPS的强制跳转

很多用户会直接输http://你的域名,如果没有跳转规则,可能会触发后端的IP跳转。新增一个80端口的server块来处理:

server {
    listen server_ip:80;
    server_name mydomain.com www.mydomain.com;
    # 301永久重定向到HTTPS,保持原请求路径
    return 301 https://$host$request_uri;
}

3. 检查Node.js应用的重定向代码

如果上面两步改完还是跳IP,那大概率是你的Node.js API里硬编码了服务器IP的重定向。比如你可能写了:

// 错误写法:硬编码IP
res.redirect('https://server_ip/api/xxx');

改成相对路径或者动态获取请求的域名:

// 推荐:用相对路径,自动继承当前域名
res.redirect('/api/xxx');

// 或者动态获取Host头
const host = req.get('host');
res.redirect(`https://${host}/api/xxx`);

4. 验证配置并重启Nginx

改完配置先检查有没有语法错误:

nginx -t

如果提示ok和successful,就重启Nginx让配置生效:

systemctl restart nginx

这样调整后,访问你的域名时地址栏就会一直显示mydomain.com,不会跳成服务器IP啦。

内容的提问来源于stack exchange,提问作者proquibas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:11:24