Nx单体仓库+Docker+Nginx单端口反向代理配置问题
问题解决:实现Nginx反向代理多Nuxt子路径访问
可以实现该需求,现有配置存在几处关键问题,修改后即可正常运行:
1. 修正Nginx反向代理配置 (reverse_proxy.conf)
现有配置的核心问题是Docker网络内服务寻址错误和路径映射逻辑不匹配需求,修改后的配置如下:
events { worker_connections 1024; } http { # Docker网络内直接用服务名寻址,无需0.0.0.0 upstream test-1 { server event-module:3001; # 对应docker-compose里的event-module服务名 } upstream test-2 { server portal-module:3002; # 对应portal-module服务名 } upstream test-3 { server user-module:3003; # 对应user-module服务名 } server { listen 8080; # 配置test-1子路径代理 location /test-1/ { # 重写路径,去掉/test-1前缀后转发给Nuxt rewrite ^/test-1/(.*)$ /$1 break; proxy_pass http://test-1; # 传递必要请求头,确保Nuxt正确处理请求 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; } # 配置test-2子路径代理 location /test-2/ { rewrite ^/test-2/(.*)$ /$1 break; proxy_pass http://test-2; 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; } # 配置test-3子路径代理 location /test-3/ { rewrite ^/test-3/(.*)$ /$1 break; proxy_pass http://test-3; 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; } } }
2. 配置Nuxt应用的子路径适配
每个Nuxt应用需要明确自身的运行子路径,否则静态资源、路由会出现404错误:
对于Nuxt 2:
在apps/test-1/nuxt.config.js中添加:
export default { router: { base: '/test-1/' }, build: { publicPath: '/test-1/' } }
对于Nuxt 3:
在apps/test-1/nuxt.config.ts中添加:
export default defineNuxtConfig({ app: { baseURL: '/test-1/' }, nitro: { publicAssets: { baseURL: '/test-1/' } } })
注意:test-2和test-3需要对应修改为/test-2/和/test-3/。
3. 可选优化:移除Docker端口映射(非必需)
由于Nginx和三个Nuxt应用在同一个Docker网络(my_net)内,容器之间可以直接通过服务名+端口通信,无需将Nuxt应用的端口映射到主机。可以删除docker-compose.yml中三个应用的ports配置项,减少暴露的端口。
验证步骤
- 修改所有配置后,重启容器:
docker-compose down && docker-compose up --build
- 访问测试:
http://localhost:8080/test-1/http://localhost:8080/test-2/http://localhost:8080/test-3/
内容的提问来源于stack exchange,提问作者Nienormalny_
相关产品推荐
相关产品推荐

