Nginx反向代理docker容器局域网

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx反向代理docker容器局域网相关的知识,希望对你有一定的参考价值。

我无法理解nginx反向代理如何工作也许有人可以提供帮助。让我说我在LAN中使用docker的服务器有IP 192.168.0.3我有这样的docker-compose文件:

version: '2'

  angular-on-nginx:
    build: angular_client
    ports:
      - "80:80"
    volumes:
      - ./angular_client/dist:/usr/share/nginx/html
      - ./angular_client/default.conf:/etc/nginx/conf.d/default.conf

  express:
    build: express_server
    ports:
      - "4444:4444"
    volumes:
      - ./express_server/:/usr/src/app 
    links:
      - database
    depends_on:
      - database

  database:
    image: mongo
    ports:
      - "27777:27777"
    volumes:
      - ./mongodb_data:/data/db

在angular-on-nginx容器上有角度app和nginx,具有这样的配置:

server {
    listen       80;
    server_name  localhost;

    root   /usr/share/nginx/html;
    index  index.html index.htm;

    location / {
        try_files $uri $uri/ /index.html;
    }
    location /express {
        proxy_pass http://192.168.0.3:4000/;
    }   
}

但是当输入192.168.0.3角网页应用程序加载就好并且有效时,这不起作用。当输入192.168.0.3:4444快递服务器给出响应就好了但是在输入192.168.0.3/express时有502坏网关。如何让它工作,以便当我输入192.168.0.3/express时,我会得到与输入192.168.0.3:4444时相同的结果?

答案

不知道为什么但这有效。

server {
    listen       80;
    listen       [::]:80;
    server_name  192.168.0.3;

    root   /usr/share/nginx/html;
    index  index.html index.htm;

    location / {
        try_files $uri $uri/ /index.html;
    }
    location /express/ {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://192.168.0.3:4444;
    }   
}

以上是关于Nginx反向代理docker容器局域网的主要内容,如果未能解决你的问题,请参考以下文章

nginx 反向代理可以访问多个 docker 容器

docker 安装 nginx 并配置反向代理

对 docker 容器使用 nginx 反向代理

markdown Docker多容器和反向代理nginx

NGINX 反向代理到运行 Web 应用程序的 docker 容器

Nginx反向代理docker容器进行域名解析绑定的实现方法