如何从docker主机上的nginx连接到容器中的应用程序

时间:2017-11-23 11:56:21

标签: docker nginx networking docker-compose

情况是:我们使用nginx服务,它也充当了docker服务器。

此外,我们在docker容器中有Java应用程序,它在8080处侦听。

问题是从nginx连接到容器的已发布端口的权限。

Nginx.error.log显示:

2017/11/23 13:44:12 [crit] 3599#0: *1 connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream,
2017/11/23 13:44:13 [error] 3599#0: *1 no live upstreams while connecting to upstream

网站配置为:

server {
listen 80 default_server;
server_name _;

location / {
   proxy_pass http://localhost:8080;
   include proxy.conf;
 }
}

容器配置:

version: '3'
services:
    app:
    image: user/appX
    restart: always
    container_name: appX
    ports:
     - "8080:8080"
    env_file:
      - ./appX.env
    extra_hosts:
      - "host:172.101.0.1"
    networks:
      mynet:
       ipv4_address: 172.101.0.2

 networks:
    mynet:
      external:
        name: mynet

权限发生是因为nginx用户是nginx而docker用户是root。 如何在不将nginx移动到容器的情况下解决此问题? 或者也许有一些工作存在?

1 个答案:

答案 0 :(得分:1)

SELinux配置存在问题。

通过运行解决:

setsebool -P httpd_can_network_connect 1