Docker-撰写:Nginx proxy_pass 我的 api
Docker-compose: Nginx proxy_pass my api
我正在尝试使用 nginx 将我的 api 代理到我的客户端,一切都已 docker 化。
我得到了我的客户端容器,它是一个简单的 angular2 客户端托管,nginx 链接到我的 api,我的 api 容器链接到我的 mongo 容器。
问题是我的 localhost:80/api 每次都是 404。
我一定是漏掉了什么....
这是我的 nginx.conf
server {
listen 80;
# location /api/ {
# proxy_pass http://api:3000/;
# proxy_redirect http://api:3000/ http://localhost:80/api/;
# proxy_set_header Host $host;
# }
# location ~ /api/(?<section>.+) {
# proxy_pass http://api:3000/api/$section;
# proxy_set_header Host $host;
# }
location /api {
proxy_pass http://api:3000/api/;
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;
proxy_set_header X-Forwarded-Host $server_name;
}
这是我的 docker-compose
services:
mongo:
image: mongo
ports:
- "27017:27017"
api:
build: ./server
ports:
- "3000"
volumes:
- .:/server
depends_on:
- mongo
web:
build: ./client
ports:
- "80:80"
volumes:
- .:/client
depends_on:
- api
我通过 node.js 反向代理而不是 nginx
解决了这个问题
我正在尝试使用 nginx 将我的 api 代理到我的客户端,一切都已 docker 化。
我得到了我的客户端容器,它是一个简单的 angular2 客户端托管,nginx 链接到我的 api,我的 api 容器链接到我的 mongo 容器。
问题是我的 localhost:80/api 每次都是 404。
我一定是漏掉了什么....
这是我的 nginx.conf
server {
listen 80;
# location /api/ {
# proxy_pass http://api:3000/;
# proxy_redirect http://api:3000/ http://localhost:80/api/;
# proxy_set_header Host $host;
# }
# location ~ /api/(?<section>.+) {
# proxy_pass http://api:3000/api/$section;
# proxy_set_header Host $host;
# }
location /api {
proxy_pass http://api:3000/api/;
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;
proxy_set_header X-Forwarded-Host $server_name;
}
这是我的 docker-compose
services:
mongo:
image: mongo
ports:
- "27017:27017"
api:
build: ./server
ports:
- "3000"
volumes:
- .:/server
depends_on:
- mongo
web:
build: ./client
ports:
- "80:80"
volumes:
- .:/client
depends_on:
- api
我通过 node.js 反向代理而不是 nginx
解决了这个问题