这就是我如何使用nginx配置我的反向代理。有运行nodeJS应用程序的docker容器(app1,app2,...)Nginx反向代理:如何通过子域访问不同的容器?
通过这个我通过localhost:8080
指向docker container app1 nodeJS应用程序并使用localhost:8081
指向app2。
但我想通过子域调用应用程序而不使用端口,我不明白怎么做到这一点。我也觉得我搞砸了港口......
app1.localhost
应指向app1
和app2.localhost
应指向app2
。
nginx.conf
http {
sendfile on;
upstream docker-app1 {
server app1:80;
}
upstream docker-app2 {
server app2:80;
}
server {
listen 8080;
server_name app1.localhost;
location/{
proxy_pass http://docker-app1;
proxy_redirect off;
proxy_buffering 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;
#proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
}
server {
listen 8081;
server_name app2.localhost;
location/{
proxy_pass http://docker-app2;
proxy_redirect off;
proxy_buffering 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;
#proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
}
}
泊坞窗,compose.yml
version: '3.3'
services:
nginx:
container_name: 'nginx'
image: 'nginx:1.13.5'
restart: 'always'
ports:
- '80:80'
- '8080:8080'
- '8081:8081'
- '443:443'
volumes:
- './nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro'
app1:
container_name: app1
build: ./app1
restart: always
ports:
- '3001:80'
app2:
container_name: app2
build: ./app1
restart: always
ports:
- '4200:80'
更新:作为的Sergiu提供了良好的链接,反向代理,我更新了帖子与新组态;问题还是一样
所以你想访问localhost:8081作为http://app.local? – Sergiu
是否阻止了您使用端口80? – Sergiu
我不确定你是否可以这样做,但你可以defo有http://app.local:8081如果没关系 – Sergiu