MEAN应用Docker部署后注册请求代理超时问题求助
MEAN应用Docker部署代理超时问题解决
问题根源
- Docker容器网络里的
localhost指容器自身,不是宿主机或其他容器。前端容器里的proxy.config.json用http://localhost:8080,会尝试访问容器内部的8080端口,而非后端服务容器。 - Nginx配置存在两处错误:
- 根路径
/直接代理到localhost:8080,应该指向前端服务; - 未配置
/auth路径的代理规则,前端的/auth请求无法转发到后端。
- 根路径
配置修改方案
1. 调整proxy.config.json
把target改成后端服务的容器名称(对应docker-compose里的服务名,假设为server),Docker内部DNS可通过服务名直接解析:
{ "/auth/*": { "target": "http://server:8080", "secure": false, "logLevel": "debug", "changeOrigin": true } }
2. 修正nginx.conf
调整根路径代理到前端服务,新增/auth路径的代理规则:
events { worker_connections 1024; } http { upstream client { server client:4200; } upstream server { server server:8080; } server { listen 80; server_name *.*; # 根路径代理到前端服务 location / { proxy_pass http://client; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffers 32 4k; } # /api路径代理到后端 location /api { resolver 127.0.0.11 valid=30s; proxy_pass http://server; proxy_set_header Host $host; } # 新增/auth路径代理到后端 location /auth { resolver 127.0.0.11 valid=30s; proxy_pass http://server; proxy_set_header Host $host; proxy_set_header X-Forwarded-Prefix /auth; } } }
3. 后续操作
- 确认docker-compose.yml里前端服务名是
client、后端是server,若名称不同,同步修改配置里的对应字段。 - 重启容器生效:
docker-compose down && docker-compose up -d
内容的提问来源于stack exchange,提问作者Nandu Aji
相关产品推荐
相关产品推荐

