Nginx配合ExpressJS运行时如何正确将服务器IP重定向至域名
问题原因
- 域名对应的server块中未配置反向代理规则,你使用Express提供动态服务,而当前配置仅会读取
/var/www/html路径下的静态文件,无法转发请求到Express服务,导致域名访问失败。 default_server标记配置位置不合理,建议调整到跳转专用的server块实现更通用的IP/未匹配域名跳转逻辑。
调整后的配置
替换你原有Nginx配置为以下内容,注意将proxy_pass的端口改为你实际Express服务监听的端口:
# 处理域名请求的服务块 server { listen 80; listen [::]:80; server_name example.com www.example.com; location / { # 反向代理到本地Express服务 proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # 处理IP访问/未匹配域名的跳转块 server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 $scheme://example.com$request_uri; }
生效步骤
- 执行命令测试配置合法性:
nginx -t,返回success再进行后续操作 - 重载Nginx配置生效:
systemctl reload nginx - 清理浏览器301永久重定向缓存,或用无痕模式测试效果
你的域名解析配置无需修改,已经符合要求。
内容的提问来源于stack exchange,提问作者nimaomao
相关产品推荐
相关产品推荐

