如何在Docker Nginx中访问主机API接口

时间:2018-09-03 06:04:49

标签: docker nginx

我的服务器http://127.0.0.1:5438/api提供了api。

如果我不使用docker,nginx配置可以正常工作。

server {
   listen       80;
    server_name  127.0.0.1;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    location ^~/api/ { proxy_pass http://127.0.0.1:5438/api/; }
 }

如果我使用的是docker,则nginx配置不起作用。

sudo docker run \
  -d -p 80:80 \
  -v /usr/share/nginx/html:/usr/share/nginx/html \
  -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /usr/share/nginx/html/nginx.conf:/etc/nginx/sites-enabled/nginx.conf \
  nginx

那么如何在docker nginx中访问主机的5438端口呢?

2 个答案:

答案 0 :(得分:0)

如果您不在意网络拓扑,请尝试添加--net=host,但限制是主机不应具有服务使用的80端口。

sudo docker run \
  --net=host \
  -d \
  -v /usr/share/nginx/html:/usr/share/nginx/html \
  -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /usr/share/nginx/html/nginx.conf:/etc/nginx/sites-enabled/nginx.conf \
  nginx

答案 1 :(得分:-2)

在docker run命令中将“ -p 80:80”修改为“ -p 5438:80”,这会将Docker的80端口连接到主机的5438端口。

sudo docker run \
-d -p 5438:80 \
-v /usr/share/nginx/html:/usr/share/nginx/html \
-v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /usr/share/nginx/html/nginx.conf:/etc/nginx/sites-enabled/nginx.conf \
nginx

希望它能正常工作!