Nginx配置求助:非指定域名请求转发至prod服务器
Nginx实现指定域名转发、其余域名统一转发的配置方案
完全可以实现你的需求,具体操作如下:
最终配置示例
将以下两个server块添加到你的Nginx配置文件中(比如/etc/nginx/conf.d/your-site.conf):
# 处理dev.local和sat.local的请求 server { listen 80; server_name dev.local sat.local; location / { proxy_pass http://sat:80; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } # 处理所有其他域名的请求(默认服务器) server { listen 80 default_server; server_name _; # 专用的默认服务器标识,比*更规范 location / { proxy_pass http://prod:80; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
原理说明
Nginx处理请求时会按优先级匹配server块:
- 优先匹配精确匹配的
server_name(即dev.local和sat.local),这类请求会被转发到http://sat:80; - 当请求的Host头不匹配任何精确的
server_name时,会触发标记为default_server的server块,也就是上面第二个配置,将请求转发到http://prod:80。
验证与生效
- 配置完成后,先测试语法是否正确:
nginx -t
- 若测试无报错,重载Nginx使配置生效:
systemctl reload nginx # 或根据系统环境使用:service nginx reload
内容的提问来源于stack exchange,提问作者phuwn
相关产品推荐
相关产品推荐

