Macos Docker nginx容器:http代码400

Macos Docker nginx容器:http代码400,macos,docker,nginx,networking,docker-for-mac,Macos,Docker,Nginx,Networking,Docker For Mac,我是docker的新手,我正在尝试从 我拉了图像 docker pull nginx 我在开集装箱 docker run--rm--name=some nginx-p 8080:80 nginx 但当我在本地机器的浏览器中打开localhost:8080时,一直都在使用http 400。来自docker输出的日志: 172.17.0.1 - - [14/Dec/2017:23:07:11 +0000] "\x16\x03\x01\x00\xB5\x01\x00\x00\xB1\x03\x03\x

我是docker的新手,我正在尝试从

  • 我拉了图像
  • docker pull nginx

  • 我在开集装箱
  • docker run--rm--name=some nginx-p 8080:80 nginx

    但当我在本地机器的浏览器中打开localhost:8080时,一直都在使用http 400。来自docker输出的日志:

    172.17.0.1 - - [14/Dec/2017:23:07:11 +0000] "\x16\x03\x01\x00\xB5\x01\x00\x00\xB1\x03\x03\x81e|u\x93\xFC`Qo\xC8\xE6y\x18{%\x83\x8C\xC2a\xC93V\xB5;\xC0V\xDC\x10{\xC9)X\x00\x00\x1E\xC0+\xC0/\xCC\xA9\xCC\xA8\xC0,\xC00\xC0" 400 173 "-" "-" "-"
    
    怎么了?我在容器中检查了nginx(
    curl localhost
    ),它正常工作


    谢谢。

    我现在拿到了。这有点复杂,但我会尽量简化:

    您正在将8080主机端口绑定到80容器端口。因此,如果在主机上执行
    curl localhost
    ,这意味着您不是在容器内调用Nginx服务,而是在*nix系统中调用端口80进程。同样,如果在容器内部发送相同的命令,它也会工作,因为它在容器内部公开了默认的http端口(80),但在容器外部没有公开。您可以通过调用
    curl localhost:8080
    来确认此假设。如果此命令作为container命令返回,则是正确的


    有可能理解吗?

    它看起来不像是Nginx或代理问题。错误4xx表示客户端未将正确的数据发送到服务器进行处理。如果你发送你的代码请求和服务器处理,我想我们可以帮你更多。我不知道。这是nginx的静态状态页面。我不需要发送数据,只需要获取localhost:8080的请求状态页面,然后告诉您错误(当您考虑web代理时)。错误4xx告诉您来自web的数据正在通过Nginx,其中一些数据正在到达服务器处理程序。这意味着您的服务(localhost:8080)不知道如何解释此数据。我想你应该提供一个更详细的案例描述。法比亚诺,谢谢你的帮助。我只是遵循指南,在没有自定义配置的情况下安装新的nginx。我只想看看nginx的服务页面,了解它是如何工作的(我指的是带有nginx容器的docker->local machine)。你可以打开什么
    http://localhost:8080
    而不仅仅是
    localhost:8080
    。如果您不指定,浏览器可能会采用https。