Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker中的nginx无法与本地主机通信_Docker_Nginx - Fatal编程技术网

docker中的nginx无法与本地主机通信

docker中的nginx无法与本地主机通信,docker,nginx,Docker,Nginx,目标是: 为所有请求返回相同的index.html 除了路径名从“/api”(例如localhost/api/asd)开始的情况外,在这种情况下,将此请求转发给在localhost:8080上运行的应用程序 我在ubuntu上运行nginx就成功地完成了这个任务。但当我在docker容器中尝试相同的方法时,每个“/api”请求都会得到502: 2019/11/03 14:35:39[错误]6#6:*22 connect()失败(111:Connection 拒绝)连接到上游时,客户端:172.1

目标是:

  • 为所有请求返回相同的index.html
  • 除了路径名从“/api”(例如localhost/api/asd)开始的情况外,在这种情况下,将此请求转发给在localhost:8080上运行的应用程序
  • 我在ubuntu上运行nginx就成功地完成了这个任务。但当我在docker容器中尝试相同的方法时,每个“/api”请求都会得到502:

    2019/11/03 14:35:39[错误]6#6:*22 connect()失败(111:Connection 拒绝)连接到上游时,客户端:172.17.0.1,服务器: 127.0.0.1,请求:“GET/api/library/source/find?page=0&size=40&q=jtdcjtiycxvlcnklmjilm0elmjilmjilmkmjwzxjpb2qlmjilm0elmjjbtlrjuvvvjvfjvjllmjjjjjbgfzc2lmwnghdglvbnmjilm0elnuqlmj0exbluymiuzqsu1rcu3ra== HTTP/1.1“,上游: "", 主持人:“本地主机”,推荐人: "" 172.17.0.1--[2019年11月3日:14:35:39+0000]“获取/api/library/source/find?page=0&size=40&q=JTDCJTIYCxVLCNKLMJILM0ElmjilmjilmKmlMJWZXJPB2QLMJILM0ElmJJBTlJVvvfKllMJJJJBGFZC2LMWNHGLVbNMJIL0ElnUYLnUKmlMJ0ExblyMiuqsu1Rcu3RA== HTTP/1.1“502 559” “Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,类似 壁虎)铬/78.0.3904.87狩猎/537.36英寸

    “172.17.0.1”看起来很奇怪。我使用“nginx”映像,它的/etc/hosts文件中有以下内容:

    127.0.0.1   localhost
    ::1 localhost ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    172.17.0.2  1a0b306a3a80
    
    注释“172.17.0.2”,而非“172.17.0.1”

    我正在运行的Dockerfile和nginx配置可以在这里找到:

    映像的构建和运行方式如下: sudo docker build-t节奏vs用户界面 sudo docker run-P80:80临时用户界面


    我做错了什么?如何使docker映像将请求发送到本地主机:8080?

    快速应答:使用附加参数运行docker网络

    docker run -p 80:80 --network=host tempvs-ui
    
    问题是docker(主机)服务器和docker容器中的
    localhost
    不一样。
    在当前实现中,重定向发生在docker容器内部。而您的目标应用程序在主机上运行。这就是出现连接被拒绝错误的原因。

    文档:,.

    nginx在80上运行的第一件事,那么8080上的u服务器如何在同一个容器中运行呢?两个过程?第二件事是您的nginx配置和错误看起来不匹配
    http://127.0.0.1:8080/api;
    ,似乎您的
    8080
    容器已关闭谢谢!我忽略了容器中的localhost与我的独立nginx不同这一事实。你建议的那个情人很有魅力!