node.js-Nginx反向代理:如何通过子域访问不同的容器?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了node.js-Nginx反向代理:如何通过子域访问不同的容器?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2303字,纯文字阅读大概需要4分钟。
内容图文
这就是我使用nginx配置反向代理的方式.有运行nodeJS应用程序的docker容器(app1,app2,…)
这样,我通过localhost:8080指向docker容器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;
}
}
}
docker-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为反向代理提供了很好的链接,因此我使用新配置更新了该帖子;问题还是一样
解决方法:
代替自定义nginx,使用jwilder/nginx-proxy应该足够了:
version: '3.3'
services:
nginx:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
app1:
container_name: app1
build: ./app1
restart: always
environment:
VIRTUAL_HOST: app1.localhost
ports:
- 80
app2:
container_name: app2
build: ./app1
restart: always
environment:
VIRTUAL_HOST: app2.localhost
ports:
- 80
然后将其放在您的计算机的/ etc / host中:
127.0.0.1 app1.localhost
127.0.0.1 app2.localhost
用作:
curl -i app1.localhost
jwilder / nginx-proxy将神奇地读取每个容器中的VIRTUAL_HOST环境变量(通过docket API),然后相应地设置其配置文件.
内容总结
以上是互联网集市为您收集整理的node.js-Nginx反向代理:如何通过子域访问不同的容器?全部内容,希望文章能够帮你解决node.js-Nginx反向代理:如何通过子域访问不同的容器?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。