如何配置Nginx反向代理解析域名段实现动态转发至对应内网IP
实现方案
该需求完全可以通过Nginx自带的server_name正则捕获功能实现,不需要额外安装第三方模块。
前置准备
- 提前配置泛域名解析:将
dn.*.mydomain.name的所有解析记录指向你的Nginx反向代理服务器公网IP - 确认你使用的Nginx包含
ngx_http_rewrite_module模块,主流发行版默认安装的Nginx都已内置该模块,无需额外编译
Nginx配置示例
http { # 若纯内网环境无公共DNS,可替换为内网DNS地址,不需要域名解析的场景也可删除该行配置 resolver 114.114.114.114 valid=300s; resolver_timeout 5s; server { listen 80; # 正则捕获域名中对应IP最后两段的字段,o1对应xx、o2对应yy server_name ~^dn\.(?<o1>\d+)-(?<o2>\d+)\.mydomain\.name$; # 可选配置:拦截非法IP段请求 if ($o1 > 255) { return 400 "Invalid IP segment"; } if ($o2 > 255) { return 400 "Invalid IP segment"; } location / { # 自动拼接内网目标地址,$request_uri会自动携带完整请求路径和参数 proxy_pass http://10.10.$o1.$o2$request_uri; # 常规反向代理请求头配置 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; } } }
生效验证
- 配置修改完成后执行
nginx -t验证语法是否正确 - 确认无报错后执行
nginx -s reload加载新配置 - 直接访问
http://dn.55-32.mydomain.name/path/file.cfg即可自动转发到目标内网地址
内容的提问来源于stack exchange,提问作者Ricardo
相关产品推荐
相关产品推荐

