【问题标题】:How to access host api interface in docker nginx如何在 docker nginx 中访问主机 api 接口
【发布时间】:2018-09-03 14:58:46
【问题描述】:

我的服务器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端口呢?

【问题讨论】:

标签: docker nginx


【解决方案1】:

如果你不关心网络toplogic,尝试添加--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

【讨论】:

    【解决方案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
    

    希望有用!!!

    【讨论】:

    • Listen tcp 0.0.0.0:5438: bind: address already in use 5438 端口已经在运行以提供 api。
    • 如果你的 nginx 服务器已经在 5438 端口的主机上运行,​​那么你不能绑定这个端口。您需要停止已经在运行的 nginx 服务器或尝试使用其他端口 ex : 5439 来测试并检查它是否工作。
    • 127.0.0.1:5438 是一个不使用 nginx 的 node js express 后端。例如 127.0.0.1:5438/api/user/1 将响应用户 1 的信息。我想要监听端口 80 的 docker 中的 nginx 访问 127.0.0.1:5438。
    • 据我了解,127.0.0.1:5438 已经在运行 docker 容器的主机中被 nodejs 使用。如果这是正确的,那么您不能将相同的端口绑定到 docker nginx 容器,因为它已经使用了 nodejs 应用程序。更改 nodejs 侦听端口或 docker nginx 端口。
    • 问题是尝试对已经在主机上的端口 5438 上运行的服务器进行出站调用。 docker run -p 选项只会影响对容器的入站调用。
    猜你喜欢
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2016-07-04
    • 1970-01-01
    • 2023-03-26
    • 2021-07-17
    相关资源
    最近更新 更多