elasticsearch,docker,proxy,Nginx,elasticsearch,Docker,Proxy" /> elasticsearch,docker,proxy,Nginx,elasticsearch,Docker,Proxy" />

使用nginx作为docker的代理

使用nginx作为docker的代理,nginx,elasticsearch,docker,proxy,Nginx,elasticsearch,Docker,Proxy,我目前尝试使用nginx作为elasticsearch引擎的代理,所有这些都是通过docker实现的。 我的elasticsearch运行命令如下: docker run --name elasticsearch_5.2.1 \ -d \ elasticsearch:5.2.1 nginx的一个: docker run --name nginx_1.11.10 \ -p 8200:80 \ -l elasticsearch_5.2.1:elasticsearch \ -v /my.conf:/

我目前尝试使用nginx作为elasticsearch引擎的代理,所有这些都是通过docker实现的。 我的elasticsearch运行命令如下:

docker run --name elasticsearch_5.2.1 \
-d \
elasticsearch:5.2.1
nginx的一个:

docker run --name nginx_1.11.10 \
-p 8200:80 \
-l elasticsearch_5.2.1:elasticsearch \
-v /my.conf:/etc/nginx/nginx.conf:ro \
-d \
nginx:1.11.10
我的nginx配置是:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    upstream elasticsearch_proxy {
        server elasticsearch:9200;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://elasticsearch_proxy;
            proxy_http_version 1.1;
            proxy_set_header Connection "Keep-Alive";
            proxy_set_header Proxy-Connection "Keep-Alive";
        }
    }
}
但是,当nginx启动时,我有一个错误:

2017/03/01 23:45:47 [emerg] 1#1: host not found in upstream "elasticsearch:9200" in /etc/nginx/nginx.conf:15
nginx: [emerg] host not found in upstream "elasticsearch:9200" in /etc/nginx/nginx.conf:15
我知道nginx找不到带别名的elasticsearch。但我找不到问题所在

有人已经有这个问题了吗


谢谢。

您需要创建一个用户网络

docker create network my_app
然后在该网络上运行两个容器

docker run --name elasticsearch_5.2.1 \
-d --network my_app \
elasticsearch:5.2.1

docker run --name nginx_1.11.10 \
-p 8200:80 \
-l elasticsearch_5.2.1:elasticsearch \
--network my_app \
-v /my.conf:/etc/nginx/nginx.conf:ro \
-d \
nginx:1.11.10

然后,您应该能够像解析DNS名称一样正确解析名称。

您需要创建一个用户网络

docker create network my_app
然后在该网络上运行两个容器

docker run --name elasticsearch_5.2.1 \
-d --network my_app \
elasticsearch:5.2.1

docker run --name nginx_1.11.10 \
-p 8200:80 \
-l elasticsearch_5.2.1:elasticsearch \
--network my_app \
-v /my.conf:/etc/nginx/nginx.conf:ro \
-d \
nginx:1.11.10

然后,您应该能够正确解析名称,就像解析DNS名称一样。

docker compose
也使解析变得简单。@OresteViron如果您告诉nginx.conf使用主机名
elasticsearch_5.2.1
?或者在第一个容器上使用
--name elasticsearch
?@OresteViron这是因为“链接”选项已被弃用,我认为自动的“类似DNS”名称不再像以前那样工作。现在“正确”的方法是使用Docker用户网络。
Docker compose
也很容易做到。@OresteViron如果您告诉nginx.conf使用主机名
elasticsearch_5.2.1
?或者在第一个容器上使用
--name elasticsearch
?@OresteViron这是因为“链接”选项已被弃用,我认为自动的“类似DNS”名称不再像以前那样工作。现在“正确”的方法是使用Docker用户网络。