动态Nginx配置:基于前端主机代理至后端
Nginx动态路由配置:从前端主机名推导后端地址
以下配置可实现根据当前前端域名动态推导后端地址,适配生产环境(无stage后缀)及各类带stage后缀的环境,自动将/api开头的请求路由至对应后端:
server { listen 443 ssl; # 匹配生产环境域名和所有带stage后缀的前端域名 server_name my-app-ui.org my-app-ui-*.org; # 替换为你的SSL证书实际路径 ssl_certificate /etc/nginx/ssl/my-app.crt; ssl_certificate_key /etc/nginx/ssl/my-app.key; # 初始化后端主机地址变量 set $backend_host ""; # 处理生产环境:my-app-ui.org → my-app.org if ($host = my-app-ui.org) { set $backend_host "my-app.org"; } # 处理带stage的环境:提取stage后缀并拼接后端域名 if ($host ~* ^my-app-ui-(.*)\.org$) { set $backend_host "my-app-$1.org"; } # 路由/api开头的请求到后端 location /api/ { # 若无法匹配有效后端地址,返回404 if ($backend_host = "") { return 404; } proxy_pass https://$backend_host; # 传递必要请求头,确保后端正确处理请求 proxy_set_header Host $backend_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; } # 处理前端静态资源(根据你的前端部署路径调整root值) location / { root /var/www/my-app-frontend/dist; try_files $uri $uri/ /index.html; } }
关键配置说明
- 动态后端地址生成:通过
$host变量获取当前请求域名,结合正则匹配与字符串替换,自动生成对应后端域名。生产环境直接替换前缀,带stage的环境提取后缀拼接。 - 请求路由规则:
location /api/块专门处理所有以/api开头的请求,通过proxy_pass转发至动态生成的后端地址。 - 请求头配置:
proxy_set_header确保后端能获取正确的主机名、客户端IP等信息,避免后端处理异常。
注意事项
- 确保SSL证书覆盖所有需支持的域名(可使用通配符证书
*.my-app-ui.org搭配my-app-ui.org)。 - 修改
root指令值为你的前端静态文件实际部署路径。 - 配置完成后执行
nginx -t检查语法正确性,无误后执行nginx -s reload重载配置。
内容的提问来源于stack exchange,提问作者MikeJ82
相关产品推荐
相关产品推荐

