Spring Boot+Angular项目Nginx代理配置问题求助
解决Angular Docker容器中Nginx代理后端接口的502问题
等价于proxy.config.json的Nginx配置
替换Nginx默认配置文件(通常路径为/etc/nginx/conf.d/default.conf)为以下内容:
server { listen 80; server_name localhost; root /usr/share/nginx/html; index index.html index.htm; # 处理Angular单页应用路由刷新404问题 location / { try_files $uri $uri/ /index.html; } # 匹配/api开头的请求,转发到Spring Boot后端 location /api { proxy_pass http://localhost:8443; 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; # 若后端使用自签名HTTPS证书,取消下方注释跳过验证 # proxy_ssl_verify off; } }
关键配置说明
location /api:精准匹配所有以/api开头的前端请求,和本地proxy.config.json的代理规则完全对齐proxy_pass http://localhost:8443:不带末尾斜杠,确保请求路径完整转发(比如/api/user/authenticate会转发到http://localhost:8443/api/user/authenticate,完美适配后端server.servlet.context-path=/api的配置)- 请求头配置:保证后端能正确获取客户端原始请求信息,避免权限或路由判断异常
Docker环境额外注意事项
如果用Docker Compose编排多容器,容器内的localhost指向自身,需将proxy_pass中的localhost:8443替换为Spring Boot容器的服务名(例如http://backend:8443,其中backend是docker-compose.yml中后端服务的名称),同时确保后端容器的8443端口已暴露并加入同一Docker网络。
内容的提问来源于stack exchange,提问作者Shashi Ranjan
相关产品推荐
相关产品推荐

