我有web應用程序。Docker - nginx代理 - 訪問容器之間的主機
- 公共Web應用(應用)
- API的網絡應用(應用)
我爲這個應用程序泊塢窗的配置。其容器中的每個應用程序。要從Web訪問此應用程序,請使用nginx配置容器,其中nginx代理所有請求。
所以我可以運行 - http://app1.dev/和http://app2.dev/
但我需要有http://app2.dev/(訪問主機從APP1容器app2.dev)從APP1訪問。
平(從APP1容器):
PING app2.dev (127.0.53.53) 56(84) bytes of data.
64 bytes from 127.0.53.53: icmp_seq=1 ttl=64 time=0.027 ms
64 bytes from 127.0.53.53: icmp_seq=2 ttl=64 time=0.038 ms
64 bytes from 127.0.53.53: icmp_seq=3 ttl=64 time=0.038 ms
我應該還有什麼配置,有來自APP1容器訪問http://app2.dev/主機?
Nginx的代理配置
upstream app1_upstream {
server app1;
}
upstream app1_upstream {
server app2;
}
server {
listen 80;
server_name app1.dev
app2.dev;
location/{
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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;
proxy_cache_bypass $http_upgrade;
if ($host = "app1.dev") {
proxy_pass http://app1;
}
if ($host = "app2.dev") {
proxy_pass http://app2;
}
}
error_log /var/log/nginx/proxy_error.log;
access_log /var/log/nginx/proxy_access.log;
}
泊塢構成
version: '2'
services:
proxy:
build: ./proxy/
ports:
- "80:80"
- "443:443"
links:
- app1
- app2
- app1:app1
- app2:app2
hostname: proxy
app1:
build: ./app1/
volumes:
- ../app1/:/var/www/app1
hostname: app1
app2:
build: ./app2/
volumes:
- ../app2/:/var/www/app2
hostname: app2
app1 /sbin/my_init Up 80/tcp
app2 /sbin/my_init Up 80/tcp
proxy_1 /sbin/my_init Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
謝謝你的男人。這真的幫了我。 – Dmitry
你好! 我試過同樣的事情,但沒有爲我工作。 Nginx仍然無法解析名稱。我是否明智地遺漏了某些許可? – MSIS
我認爲你的意思是碼頭工人**網絡**創建我的網絡(沒有s) –