情况是:我们使用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移动到容器的情况下解决此问题?
或者也许有一些工作存在?
答案 0 :(得分:1)
SELinux配置存在问题。
通过运行解决:
setsebool -P httpd_can_network_connect 1