我有以下碼頭工人組成:
version: '3.1'
services:
backend:
container_name: backend
image: backendnode
restart: always
ports:
- 3000:3000
frontend:
container_name: frontend
image: frontnginx
restart: always
ports:
- 4200:80
apigw:
image: reverseproxy
restart: always
ports:
- 80:80
depends_on:
- frontend
- backend
這是reverseproxy影像 nginx.conf:
worker_processes auto;
events { worker_connections 1024; }
http {
server {
listen 80;
server_name localhost 127.0.0.1;
location / {
proxy_pass http://frontend:4200;
proxy_set_header X-Forwarded-For $remote_addr;
}
location /api {
proxy_pass http://backend:3000;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}
運行時docker-compose run,我得到以下結果:
- localhost:80/api/users:效果很好,nginx 正確重定向到后端。
- localhost:80/index.html:不作業,我收到以下錯誤:
連接到上游時連接()失敗(111:連接被拒絕),客戶端:172.20.0.1,服務器:localhost,請求:“GET /index.html HTTP/1.1”,上游:“http://172.20.0.5:4200 /index.html”,主機:“本地主機:80”
Frontend是一個簡單的 nginx web 服務器,這是它的 nginx.conf:
events{}
http {
include /etc/nginx/mime.types;
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
}
知道為什么反向代理它不適用于前端路由嗎?
uj5u.com熱心網友回復:
從評論執行緒創建答案:Docker 網路的作業方式如下:如果您在 docker 網路中使用通信,則需要參考內部埠。由于埠映射用于“外部世界”。因此,在您的情況下,您需要參考“frontend:80”而不是 4200。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490081.html
標籤:码头工人 nginx 码头工人撰写 nginx-反向代理
上一篇:在公共子資源后面映射本地應用程式
