Nginx请求将一个容器重定向到另一个容器

时间:2018-01-16 20:08:43

标签: linux docker docker-compose devops docker-swarm

我使用以下撰写文件运行两个centos docker容器 -

version: "2"
services:
  nginx:
    build:
      context: ./docker-build
      dockerfile: Dockerfile.nginx
    restart: always
    ports:
      - "8080:8080"
    command: "/usr/sbin/nginx"
    volumes:
      - ~/my-dir:/my-dir

  data:
    build:
      context: ./docker-build
      dockerfile: Dockerfile.data
    restart: always
    ports:
      - "8081:8081"
    command: "/usr/sbin/nginx"
    volumes:
     - ~/my-dir-1:/my-dir-1

我已经在两个容器中使用Dockerfile安装了nginx来访问特定目录。 尝试使用nginx将请求http://host-IP:8080/my-data/重定向到data容器。 以下是nginx容器

的Nginx配置

/etc/nginx/conf.d/default.conf

server {
    listen 8080;

  location / {
       root   /my-dir/;
       index  index.html index.htm;
       }

}

我可以使用my-dir网址访问http://host-IP:8080目录,使用my-dir-1网址访问http://host-IP:8081,如何在data容器上配置Nginx重定向请求使用http://host-IP:8080/my-data网址

3 个答案:

答案 0 :(得分:0)

我真的没有得到你的应用的用例,你为什么这样做。

但你可以使用代理,未经测试的代码来查找文档但是这样的事情。

http {
  upstream data_container {
    server data:8081;
  }
  server {
    listen 8080;


    location / {
        root   /my-dir/;
        index  index.html index.htm;
    }
    location /my-data {
      proxy-pass http://data_container$request_uri;
    }
  }
}

答案 1 :(得分:0)

nginx.conf 文件

http {

 server {

   listen 80;

   location /api {

     proxy_pass http://<SERVICE_NAME>:8080/my-api/;

   }

   location /web {

     proxy_pass http://<SERVICE_NAME>:80/my-web-app/;

   }

 }

}

events { worker_connections 1024; }

注意:/ my-api和/ my-web-app是应用程序上下文路径。 SERVICE_NAME是在docker-compose.yml文件中为每个服务指定的名称。

Dockerfile (用于Nginx)

FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

现在通过

访问网址

答案 2 :(得分:0)

如果您在这里寻找 WebSocket conf 是:

  server {
        server_name  _;
    
        location /ws {
            proxy_pass http://localhost:8888;
            # this is the key to WebSocket
            proxy_http_version  1.1;
            proxy_set_header    Upgrade $http_upgrade;
            proxy_set_header    Connection "upgrade";
            proxy_set_header    Host $http_host;
            proxy_set_header    X-Real-IP $remote_addr;
        }
    
        location / {
            proxy_pass http://localhost:8889;
        }
    }

快乐编码:)