docker中的nginx反向代理

时间:2018-04-30 09:34:47

标签: docker nginx

我对nginx有一个小问题。对于初学者,我只是将nginx和portainer作为容器运行。 Portainer在端口9000上运行,并且容器位于同一个docker网络上,因此它不是一个可见问题。 Nginx暴露端口80并且工作正常。直接访问9000时,portainer也是如此。我在本地映射nginx卷/etc/nginx/nginx.conf:ro和/ usr / share / nginx / html:ro并且它们会对更改作出反应,所以我应该正确连接。在我映射的nginx.conf(http部分)中我有

server {
    location /portainer {
        proxy_pass http://portainer:9000;
     }
}

其中portainer被命名为,portainer。我也尝试过上游指令+服务器,但这也没有用。

访问localhost / portainer时,nginx显示

2018/04/30 09:21:32 [错误] 7#7:* 1打开()" / usr / share / nginx / html / portainer"失败(2:没有这样的文件或目录),客户端:172.18.0.1,服务器:localhost,请求:" GET / portainer HTTP / 1.1",主机:" localhost"

表示该位置指令甚至没有被击中(?)。我曾尝试/在各个地方但无济于事。我猜它是一件微不足道的事情我不知道。

提前致谢,   NIK

2 个答案:

答案 0 :(得分:1)

我必须在两行中添加一个尾部斜杠:

server {
    location /portainer/ {
        proxy_pass http://portainer:9000/;
     }
}

答案 1 :(得分:0)

请改为尝试:

location ~* ^/portainer/(.*)$ {
  proxy_pass http://portainer:9000/$1$is_args$args;
}

参考:http://nginx.org/en/docs/http/ngx_http_core_module.html