Puncte:0

Utilizarea Reverse Proxy Nginx într-un container docker

drapel cn

Așadar, încercând să setez Nginx ca proxy invers folosind docker - am trei containere node js (unul frontend și două servicii backend), serviciul frontend apelează cele două servicii backend. Deci vreau ca nginx să redirecționeze către front-end (care este o aplicație web), dar de fiecare dată când încerc să trimit ceva, primesc o eroare 502 de gateway greșită. Când execut direct în containerele docker, pot trimite ping la celelalte containere prin dns_hostname sau adresa IP (pe care o iau din docker inspect) Iată o versiune editată atât a docker-compose, cât și a nginx.conf.

    versiune: "3.8"
Servicii:
  în față:
    imagine: frontend
    nume gazdă: frontend
    env_file:
      /.env
    retele:
      - rețea
    repornire: la eșec
    expune:
      - "3000"
    container_name: frontend
    backend-service-01:
      imagine: backend-service-01
        numele gazdă: backend-service-01
        env_file:
            ./backend-service-01/.env
        retele:
            - rețea
        repornire: la eșec
        container_name: backend-service-01
   backend-service-02:
        imagine: backend-service-02
        numele gazdă: backend-service-02
        env_file:
            ./backend-service-02/.env
        retele:
            - rețea
        repornire: la eșec
        container_name: backend-service-02
        
   nginx-proxy:
     imagine: nginx:stable-alpine
     Nume gazdă: nginx-proxy
     retele:
       - rețea
     repornire: la eșec
        volume:
          - /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
          - /data/nginx/certs/crt_file.crt:/etc/nginx/crt_file.crt
          - /data/nginx/certs/priv_key.key:/etc/nginx/priv_key.key:ro
        porturi:
            - 80:80
            - 443:443
        container_name: nginx-proxy
        depinde de: 
          - în față
          - backend-service-01
          - backend-service-02
retele:
    reţea:

De asemenea, aici este fișierul nginx conf pe care îl folosesc:

worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;

evenimente {
        conexiuni_muncitor 1024;
}

http {

  frontend în amonte {
    server frontend: 3000;
  }
    
  Server {
        
        # Directiva de ascultare a portului 443 (TLS)
        asculta 443 ssl; 
        asculta [::]:443 ssl;

        ssl_certificate /etc/nginx/crt_file.crt;
        ssl_certificate_key /etc/nginx/priv_key.key;

        # Unde stocăm error.log și access.log
        error_log /var/log/nginx/error.log;
        access_log /var/log/nginx/access.log;

        Locație / {
            root /usr/src/app/public/;
            proxy_pass https://frontend;
        }
  }
}

Am făcut aproape totul pentru a exclude o problemă de rețea, deoarece pot trimite ping atât la adresa IP, cât și la numele de gazdă docker din interiorul containerului nginx (folosind docker exec -it nginx-proxy sh) dacă cineva are sugestii despre ce să încerc în continuare sau pot vedea clar dacă fac ceva greșit ar fi foarte apreciat.

djdomi avatar
drapel za
1) FIE `proxy_pass` 2) SAU `root /path` 3) aș sugera să folosiți IP-ul, îmi lipsesc, de asemenea, `server_name` și, de asemenea, `proxy_set_header Host $http_host;`
Puncte:0
drapel cn

Problemă rezolvată - Problema nu a fost nici Docker, nici Nginx. Problema a fost un fost dezvoltator care a încercat să fie de ajutor și a ajuns să ne bată curele pe termen lung. Au creat o redirecționare în codul lor, pe care, dacă cineva ar încerca să folosească protocolul HTTP, ar fi redirecționat automat la protocolul HTTPS, odată ce am comentat aceste două linii de cod plictisitoare și am reconstruit containerul, surpriză, surpriză... Nginx a făcut așa cum a fost. spuse. Lecție învățată: Obțineți Nginx să vă redirecționeze; nu codul tau.

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.