невозможно подключить флягу с nginx в контейнере - PullRequest
0 голосов
/ 06 июля 2018

среда: Докер и контейнер ubuntu (не предварительно определены, порт = 6000-> 8080), колба (serve.py), gunicorn, nginx. ip сервера: 123.456.789.101

Я хочу, чтобы другие люди могли получить доступ к сети (123.456.789.101:6000), которая работает в контейнере Docker, и посетить статические изображения (123.456.789.101:6000/static/1.jpg).

Когда я использую только колбу и огнестрельное оружие и запускаю guincorn -w 2 -b 0.0.0.0:8080 serve:app, я могу получить доступ к сети (123.456.789.101:6000) успешно.

Но если я использую прокси nginx, это не удалось. подробно, как следует:

сначала, $ gunicorn -w 2 -b 127.0.0.1:8080 serve:app, успех, я могу свернуть его в контейнерной системе.

second, $ service nginx start и загрузите файл conf в site-enable.

nginx conf detail:

server {
        listen 6000;
        server_name 123.456.789.101;

         location / {
                 proxy_pass http://127.0.0.1:8080;
                 proxy_redirect     off;
                 proxy_set_header   Host                 $http_host;
                 proxy_set_header   X-Real-IP            $remote_addr;
                 proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;
                 proxy_set_header   X-Forwarded-Proto    $scheme;
         }
         location /static/ {
                root /www;
                expires 30d;
         }
}

Финал, это не удалось. Я не могу получить доступ к Интернету (123.456.789.101:6000).

Чтобы найти, что не так, я пытаюсь запустить gunicorn -w 2 -b 127.0.0.1:8080 serve:app и изменить файл конфигурации nginx

server {
        listen 80;
        server_name 127.0.0.1;

         location / {
                 proxy_pass http://127.0.0.1:8080;
                 proxy_redirect     off;
                 proxy_set_header   Host                 $http_host;
                 proxy_set_header   X-Real-IP            $remote_addr;
                 proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;
                 proxy_set_header   X-Forwarded-Proto    $scheme;
         }
         location /static/ {
                root /www;
                expires 30d;
         }
}

и curl 127.0.0.1 в контейнерной системе. это успех. это означает, что nginx может работать, он может отображать 80 на 8080.

Итак, что не так, как я могу это решить. Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Наконец-то я добился успеха. это большая ошибка в файле конфигурации nginx. подробно следуйте:

1, запустить guincorn -w 2 -b 127.0.0.1:8000 serve:app (этот порт произвольно, но не может использовать уже использующий порт)

2, пробег service nginx start nginx conf:

server {
        listen 8080;
        server_name _;# _ = 0.0.0.0
     location / {
             proxy_pass http://127.0.0.1:8000;
             proxy_redirect     off;
             proxy_set_header   Host                 $http_host;
             proxy_set_header   X-Real-IP            $remote_addr;
             proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;
             proxy_set_header   X-Forwarded-Proto    $scheme;
     }
     location /static/ {
            root /www;
            expires 30d;
     }
}

Я понимаю этот процесс: зайдя в сеть 123.456.789.101:6000, хост-сервер докера (возможно, также запускающий nginx на хост-сервере) отобразит ip на сервер-контейнер докера 172.17.0.1:8080, а затем nginx отобразит ip на 127.0.0.1:8000, наконец-то ответ колбы огнестрельного.

Итак, я использую только nginx для прослушивания порта 0.0.0.0:8080, поэтому я не использую nginx, может работать только gunicorn. Этот нгинкс похож на медиум.

0 голосов
/ 06 июля 2018
Application:

Try Running into Docker
 gunicorn -w 2 -b 0.0.0.0:8080 serve:app

If you are using Dockerfile:
    expose 8080
If you are using docker-compose.yml
    expose:
      - "8080"

Nginx Configuration (Replace DOCKER_CONTAINER_IP): 


server {
         listen 6000;
         server_name 123.456.789.101;

         location / {
                 proxy_pass http://DOCKER_CONTAINER_IP:8080;
                 proxy_redirect     off;
                 proxy_set_header   Host                 $http_host;
                 proxy_set_header   X-Real-IP            $remote_addr;
                 proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;
                 proxy_set_header   X-Forwarded-Proto    $scheme;
         }
         location /static/ {
                root /www;
                expires 30d;
         }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...