Nginx proxy_reverse для docker контейнера - PullRequest
0 голосов
/ 04 апреля 2020

В настоящее время я пытаюсь развернуть бэкэнд своего приложения как контейнер Docker с открытыми портами на моем root сервере.

Если я пытаюсь свернуть бэкэнд с помощью 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

Ожидается скручивание (работает при работе на root сервере):

$ curl http://localhost:3000

<code><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /

Ответы [ 2 ]

2 голосов
/ 04 апреля 2020

У вас nginx работает ssl (порт 443), поэтому ваш curl должен быть:

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

не указывайте какой-либо внутренний порт .

0 голосов
/ 04 апреля 2020

Проблема была в iptables на моем сервере. Некоторые правила были удалены, что привело к нарушению конфигурации Docker.

Простой sudo service docker stop был хитростью.

...