Puncte:0

Conexiunea Nginx a refuzat

drapel ng

Folosesc containere Docker pentru a găzdui o aplicație web. Am trei containere principale: MySQL, flask și Nginx. Primele două funcționează conform așteptărilor, iar cea din urmă pare să funcționeze bine, deoarece nu este afișată nicio eroare în pornirea docker-compose.

Ieșire de inițializare a containerului Nginx:

nginx | /docker-entrypoint.sh: /docker-entrypoint.d/ nu este gol, va încerca să efectueze configurarea
nginx | /docker-entrypoint.sh: Căutăm scripturi shell în /docker-entrypoint.d/
nginx | /docker-entrypoint.sh: Lansarea /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
nginx | 10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf nu este un fișier sau nu există
nginx | /docker-entrypoint.sh: Lansarea /docker-entrypoint.d/20-envsubst-on-templates.sh
nginx | /docker-entrypoint.sh: Lansarea /docker-entrypoint.d/30-tune-worker-processes.sh
nginx | /docker-entrypoint.sh: Configurare finalizată; gata de pornire
nginx | 2022/04/07 13:09:13 [notificare] 1#1: folosind metoda evenimentului „epoll”
nginx | 2022/04/07 13:09:13 [notificare] 1#1: nginx/1.21.6
nginx | 2022/04/07 13:09:13 [notă] 1#1: construit de gcc 10.2.1 20210110 (Debian 10.2.1-6) 
nginx | 2022/04/07 13:09:13 [notificare] 1#1: OS: Linux 4.19.130-boot2docker
nginx | 2022/04/07 13:09:13 [notificare] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
nginx | 2022/04/07 13:09:13 [notificare] 1#1: începeți procesele lucrătorilor
nginx | 2022/04/07 13:09:13 [notificare] 1#1: începe procesul lucrătorului 21

Nginx dockerfile

# Dockerfile-nginx
DE LA nginx:latest
# Nginx va asculta pe acest port
# EXPUNERE 80
# Eliminați fișierul de configurare implicit care
# /etc/nginx/nginx.conf include
RUN rm /etc/nginx/conf.d/default.conf
# Copiem fișierul cerințelor pentru a instala
# Dependențe Python
COPIEAZĂ nginx.conf /etc/nginx/conf.d/

Containere după desfășurare și porturile lor respective:

CONTAINER ID IMAGINE COMANDA CREAȚĂ STAREA PORTURI NUMELE
bffffcfe2f70 sc_server_nginx "/docker-entrypoint.â¦" Acum 14 secunde Până la 13 secunde 0.0.0.0:80->80/tcp nginx
a73d958c1407 sc_server_flask "uwsgi app.ini" 9 ore în urmă Up 9 ore 8080/tcp flask
d273db5f80ef mysql:5.7 "docker-entrypoint.sâ¦" acum 21 ore Până la 9 ore (sănătos) 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

Sunt nou pe serverul Nginx, așa că cred că poate fi o eroare de începător. Încerc să redirecționez tot traficul de la portul 80 al mașinii mele gazdă către portul 80 al docker, care redirecționează traficul către containerul WSGI printr-un socket.

Folosesc următoarea configurație Nginx (banuiesc nimic aproape de fantezie):

Server {
  asculta 80;
  Locație / {
    include uwsgi_params;
    uwsgi_pass balon:8080;
  }
}

După cum puteți vedea, serverul ascultă la portul 80 și redirecționează tot traficul prin socket uwsgi_pass balon:8080; la containerul WSGI care găzduiește aplicația.

Cu toate acestea, ori de câte ori introduc 127.0.0.1:80 sau 0.0.0.0:80 în browserul meu, conexiunea este refuzată. Nu am instalat niciun firewall, așa că bănuiesc că nu există nicio problemă cu portul 80 defect.

Acesta este fișierul meu de configurare app.ini, în care sunt indicați parametrii de inițializare și implementare:

[uwsgi]
wsgi-file = wsgi.py
; Acesta este numele variabilei
; în scenariul nostru care va fi numit
callable = app
; Folosim portul 8080 pe care îl vom folosi
; apoi expuneți pe Dockerfile
priză = :8080
; Setați uWSGI pentru a porni 4 lucrători
procese = 4
fire = 2
maestru = adevărat
chmod-socket = 660
vid = adevărat
die-on-term = adevărat

În plus, includ și docker-compose.yml (presupun că poate fi util):

docker-compose.yml

Servicii:
  balon:
    construi: ./balon
    container_name: balon
    reporniți: întotdeauna
    mediu inconjurator:
      - APP_NAME=MyFlaskApp
      - YOURAPPLICATION_SETTINGS=docker_config.py
    expune:
      - 8080
    depinde de:
      mysql:
          stare: service_sănătos
  mysql:
    imagine: mysql:5.7
    container_name: mysql
    porturi:
      - „3306:3306”
    mediu inconjurator:
      MYSQL_ROOT_PASSWORD:
      MYSQL_DATABASE:
      MYSQL_USER:
      MYSQL_PASSWORD:
    volume:
      - ./db/init.sql:/data/application/init.sql
    control medical:
      test: mysql -u -p --database -e "afișați tabelele;"
      interval: 3s
      reîncercări: 5
      perioada_început: 30s
  nginx:
    build: ./nginx
    container_name: nginx
    reporniți: întotdeauna
    depinde de:
      - mysql
      - balon
    porturi:
      - „80:80”

Poate cineva să ajute?

Actualizați

Am folosit Wireshark pentru a scana interfața de loopback pentru a vedea răspunsul serverului la 0.0.0.0:80 (bănuiesc că ar putea fi o problemă cu portul 80) și primesc următoarea sarcină utilă:

wireshark

drookie avatar
drapel za
Verificați jurnalele containerului nginx, răspunsul este acolo.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.