如何配置Nginx反向代理将请求转发至上游应用子路径
Nginx反向代理配置实现路径映射与访问控制
完全可行,以下是具体的配置方案,既能实现入站请求到上游/module1子路径的映射,又能严格限制只能访问该子路径下的内容:
# 你的上游服务配置(保留现有内容即可) upstream app_demo { server 你的上游服务IP:端口; # 替换为实际地址 } server { listen 80; # 若用HTTPS则改为443并配置证书 server_name 你的域名; # 替换为实际域名 # 核心:将所有入站请求转发到上游的/module1路径下 location / { # 把入站的/xxx重写为/module1/xxx,确保上游收到的请求都是/module1开头 rewrite ^/(.*)$ /module1/$1 break; proxy_pass http://app_demo; # 可选:配置代理头部,让上游服务正确识别请求来源 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; } # 安全兜底:拦截所有试图访问上游非/module1路径的请求,直接返回403 location ~ ^/(welcome|aboutus|contactus|module)/ { return 403 Forbidden; } }
配置关键点说明
- 路径映射逻辑:
rewrite规则会把所有入站的/page1这类请求,转换成上游服务的/module1/page1,完全符合你的需求。 - 访问控制:第二个
location会直接拦截所有指向/welcome、/aboutus等上游非/module1路径的请求,返回403禁止访问,即使有异常请求也无法突破限制。 - proxy_pass注意事项:这里不要在
proxy_pass后面追加路径(比如proxy_pass http://app_demo/;),否则会和rewrite规则冲突,确保上游收到的是重写后的完整路径。
内容的提问来源于stack exchange,提问作者u936293
相关产品推荐
相关产品推荐

