Docker容器的Nginx proxy_reverse

问题描述 投票:-1回答:1

我目前正在尝试将我的应用程序后端部署为具有暴露到我的根服务器的端口的Docker容器。

[如果我尝试用http://example.com:3000卷曲后端,则会超时,如果我通过nginx尝试(下面的视图配置),则会收到一个空响应(curl: (52) Empty reply from server)。

server {
  listen 443 ssl;
  server_name www.example.com example.com;
  client_max_body_size 50m;
  ssl_certificate ... # managed by Certbot
  ssl_certificate_key ... # managed by Certbot

  location /backend/ {
    proxy_pass http://localhost:3000/; 
  }
}

但是,如果我尝试从服务器本身卷曲它,则没有问题。

这是docker ps命令的相关输出:

COMMAND                  CREATED             STATUS                  PORTS                     NAMES
"node dist/server.js"    9 minutes ago       Up 8 minutes            0.0.0.0:9100->3000/tcp    backend

期望卷曲(在根服务器上运行时有效:]

$ curl http://localhost:3000

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>
docker nginx curl reverse-proxy
1个回答
2
投票

您nginx正在运行ssl(端口443),因此您的卷曲应该是:

curl -i https://example.com/backend/

不指定任何后端端口


0
投票

问题出在我服务器上的iptables。一些规则被删除,导致违反了Docker配置。

简单的sudo service docker stop是诀窍。

© www.soinside.com 2019 - 2024. All rights reserved.