Puncte:1

Docker Nginx returnează 404 pentru punctul final proxy_pass

drapel us

Pe un PC separat (care are doar IP-ul accesibil local 192.168.1.148), am 3 containere: docker_compose_ui, docker_compose_web_console & nginx

Două dintre containere ascultă în porturi dar nu au fost transmise către gazdă:

docker_compose_ui 5000/tcp
docker_compose_web_console 8888/tcp

Nginx este transmis:

nginx 0.0.0.0:80->80/tcp, :::80->80/tcp

docker_compose_ui & docker_compose_web_console sunt în rețea coloana vertebrală.

nginx este în rețele coloana vertebrală și exterior.

Orice pe coloana vertebrală nu sunt menite să fie transmise de gazdă, deci nu este accesibil publicului.

Orice pe exterior sunt menite să fie transmise de gazdă, astfel accesibile publicului.

EDIT: Pentru a clarifica, când spun public, mă refeream doar la exteriorul mașinii gazdă, încă nu am redirecționat niciun port către internet prin routerul meu.

Dacă eu inspecta rețeaua coloana vertebrală Pot vedea adresele IP:

nginx 172.21.0.4/16
docker_compose_ui 172.21.0.2/16
docker_compose_web_console 172.21.0.3/16

Dacă eu inspecta rețeaua exterior Pot vedea adresa IP pt mginx, 172.22.0.2/16.

Dacă mă ondulez din nginx la docker_compose_ui:

 docker exec nginx curl http://docker_compose_ui:5000

Primesc un răspuns html și Bine, asa de docker_compose_ui este ambele accesibile de la nginx si rezolvabile.

Daca eu fac docker exec nginx nginx -T Pot vedea că configurația este încărcată de nginx (last Server directivă).

nginx: sintaxa fișierului de configurare /etc/nginx/nginx.conf este ok
nginx: fișierul de configurare /etc/nginx/nginx.conf testul a reușit
# fișier de configurare /etc/nginx/nginx.conf:
# /etc/nginx/nginx.conf

utilizator nginx;

# Setați automat numărul de procese de lucru pe baza numărului de nuclee CPU.
worker_proceses auto;

# Permite utilizarea JIT pentru expresiile regulate pentru a accelera procesarea acestora.
pcre_jit on;

# Configura înregistrarea de erori implicită.
error_log /var/log/nginx/error.log warn;

# Include fișiere cu directive pentru a încărca module dinamice.
includ /etc/nginx/modules/*.conf;

# Anulați comentariile pentru a include fișiere cu fragmente de configurare în contextul rădăcină.
# NOTĂ: Aceasta va fi activată implicit în Alpine 3.15.
#include /etc/nginx/conf.d/*.conf;

evenimente {
        # Numărul maxim de conexiuni simultane care pot fi deschise de
        # un proces de lucru.
        conexiuni_muncitor 1024;
}

http {
    # Docker dns resolver
    resolver 127.0.0.11 ipv6=off;
        # Include maparea extensiilor de nume de fișier la tipurile de răspunsuri MIME
        # și definește tipul implicit.
        includ /etc/nginx/mime.types;
        aplicație de tip_default/octet-stream;

        # Servere de nume utilizate pentru a rezolva numele serverelor din amonte în adrese.
        # Este necesar și atunci când utilizați tcpsocket și udpsocket în modulele Lua.
        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;

        # Nu spuneți clienților versiunea nginx. Implicit este „pornit”.
        server_tokens dezactivat;

        # Specifică dimensiunea maximă acceptată a corpului unei cereri de client, ca
        # indicat de antetul cererii Content-Length. Dacă conţinutul declarat
        # lungime este mai mare decât această dimensiune, atunci clientul primește HTTP
        # cod de eroare 413. Setați la 0 pentru a dezactiva. Implicit este „1m”.
        client_max_body_size 1m;

        # Sendfile copiază datele între un FD și altul din interiorul nucleului,
        # care este mai eficient decât read() + write(). Setarea implicită este dezactivată.
        sendfile activat;

        # Determină ca nginx să încerce să-și trimită capul de răspuns HTTP într-un singur pachet,
        # în loc să folosiți cadre parțiale. Implicit este „dezactivat”.
        tcp_nopush activat;


        # Activează protocoalele specificate. Implicit este TLSv1 TLSv1.1 TLSv1.2.
        # SFAT: Dacă nu sunteți obligat să susțineți clienții vechi, eliminați TLSv1.1.
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        # Calea fișierului cu parametri Diffie-Hellman pentru cifrurile EDH.
        # SFAT: Generați cu: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`
        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;

        # Specifică că costumele noastre de criptare ar trebui să fie preferate în detrimentul cifrurilor client.
        # Implicit este „dezactivat”.
        ssl_prefer_server_ciphers activat;

        # Activează un cache SSL partajat cu o dimensiune care poate conține aproximativ 8000 de sesiuni.
        # Implicit este „niciunul”.
        ssl_session_cache shared:SSL:2m;

        # Specifică un timp în care un client poate reutiliza parametrii sesiunii.
        # Implicit este „5m”.
        ssl_session_timeout 1h;

        # Dezactivează biletele de sesiune TLS (sunt nesigure). Implicit este „pornit”.
        ssl_session_tickets off;


        # Activați gzippingul răspunsurilor.
        gzip on;

        # Setați antetul Vary HTTP așa cum este definit în RFC 2616. Implicit este „dezactivat”.
        gzip_vary on;


        # Variabila de ajutor pentru proxy websocket-uri.
        harta $http_upgrade $connection_upgrade {
                upgrade implicit;
                '' închide;
        }


        # Specifică formatul principal de jurnal.
        log_format principal „$remote_addr - $remote_user [$time_local] „$request” '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

        # Setează calea, formatul și configurația pentru o scriere a jurnalului în buffer.
        access_log /var/log/nginx/access.log principal;


        # Include configurațiile gazdelor virtuale.
        includ /etc/nginx/sites-enabled/*;
}

# SFAT: Anulați comentariile dacă utilizați modulul de flux.
#include /etc/nginx/stream.conf;

# fișier de configurare /etc/nginx/mime.types:

tipuri {
    text/html html htm shtml;
    text/css css;
    text/xml xml;
    imagine/gif gif;
    imagine/jpeg jpeg jpg;
    aplicație/javascript js;
    aplicație/atom+xml atom;
    aplicație/rss+xml rss;

    text/mathml mml;
    text/txt simplu;
    text/vnd.sun.j2me.app-descriptor jad;
    text/vnd.wap.wml wml;
    text/x-component htc;

    imagine/png png;
    imagine/svg+xml svg svgz;
    imagine/tiff tif tiff;
    imagine/vnd.wap.wbmp wbmp;
    imagine/webp webp;
    imagine/x-icoană ico;
    imagine/x-jng jng;
    imagine/x-ms-bmp bmp;

    font/woff woff;
    font/woff2 woff2;

    aplicație/java-arhivă jar war ear;
    aplicație/json json;
    aplicație/mac-binhex40 hqx;
    aplicație/msword doc;
    cerere/pdf pdf;
    aplicație/postscript ps eps ai;
    aplicație/rtf rtf;
    application/vnd.apple.mpegurl m3u8;
    application/vnd.google-earth.kml+xml kml;
    application/vnd.google-earth.kmz kmz;
    application/vnd.ms-excel xls;
    application/vnd.ms-fontobject eot;
    application/vnd.ms-powerpoint ppt;
    application/vnd.oasis.opendocument.graphics odg;
    cerere/vnd.oasis.opendocument.prezentare odp;
    application/vnd.oasis.opendocument.spreadsheet ods;
    application/vnd.oasis.opendocument.text odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc wmlc;
    aplicație/x-7z-comprimat 7z;
    aplicare/x-cacao cco;
    application/x-java-archive-diff jardiff;
    aplicație/x-java-jnlp-fișier jnlp;
    aplicație/x-makeself rulează;
    application/x-perl pl pm;
    application/x-pilot prc pdb;
    application/x-rar-compressed rar;
    application/x-redhat-package-manager rpm;
    aplicare/x-mare mare;
    aplicație/x-shockwave-flash swf;
    aplicație/x-stuffit sit;
    aplicație/x-tcl tcl tk;
    application/x-x509-ca-cert der pem crt;
    aplicație/x-xpinstall xpi;
    aplicație/xhtml+xml xhtml;
    aplicație/xspf+xml xspf;
    aplicare/zip fermoar;

    aplicație/octet-stream bin exe dll;
    application/octet-stream deb;
    application/octet-stream dmg;
    application/octet-stream iso img;
    aplicație/octet-stream msi msp msm;

    audio/midi mid midi kar;
    audio/mpeg mp3;
    audio/ogg ogg;
    audio/x-m4a m4a;
    audio/x-realaudio ra;

    video/3gpp 3gpp 3gp;
    video/mp2t ts;
    video/mp4 mp4;
    video/mpeg mpeg mpg;
    video/quicktime mov;
    video/webm webm;
    video/x-flv flv;
    video/x-m4v m4v;
    video/x-mng mng;
    video/x-ms-asf asx asf;
    video/x-ms-wmv wmv;
    video/x-msvideo avi;
}

# fișier de configurare /etc/nginx/sites-enabled/_default.conf:
# Aceasta este o configurație implicită a site-ului care va returna pur și simplu 404, împiedicând
# acces șansă la orice altă gazdă virtuală.

Server {
        asculta 80 default_server;
        asculta [::]:80 default_server;

        # Totul este un 404
        Locație / {
                întoarce 404;
        }

        # Este posibil să aveți nevoie de acest lucru pentru a preveni recursiunea return 404.
        locație = /404.html {
                intern;
        }
}

# fișier de configurare /etc/nginx/sites-enabled/docker_compose_ui.conf:
Server {
    asculta 80;
    #server_name localhost;
    numele serverului  _;

    access_log /var/log/nginx/docker_compose_ui.access.log main;

    locație /docker-compose-ui/ {
        proxy_pass http://docker_compose_ui:5000;
    }

    locație /web-console/ {
        proxy_pass http://docker_compose_web_console:8888;
    }

    locație /web-console/exec {
        proxy_pass http://docker_compose_web_console:8888;
        proxy_http_versiunea 1.1;
        proxy_set_header Actualizare $http_upgrade;
        proxy_set_header Conexiune „upgrade”;
    }
}

docker-compose config (două fișiere separate):

--- # docker-compose-ui.yml

versiunea: "3.9"

Servicii:
  docker_compose_ui:
    imagine: francesco/docker-compose-ui
    container_name: docker_compose_ui
    numele gazdă: docker_compose_ui
    reporniți: dacă nu este oprit
    work_dir: /opt/docker-compose-projects
    mediu inconjurator:
      - 'WEB_CONSOLE_PATTERN=/web-console/?cid={containerName}&cmd={command}'
    volume:
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/docker-compose-pojects:/data/docker/docker-compose-ui
    retele:
      - coloana vertebrală
  web_console:
    imagine: bitbull/docker-exec-web-console
    container_name: docker_compose_web_console
    nume de gazdă: docker_compose_web_console
    reporniți: dacă nu este oprit
    mediu inconjurator:
      - „CONTEXT_PATH=/web-console/”
    read_only: adevărat
    volume:
      - /var/run/docker.sock:/var/run/docker.sock
    retele:
      - coloana vertebrală

retele:
  coloana vertebrala:
    extern: adevărat

--- # nginx.yml

versiunea: "3.9"

Servicii:
  nginx:
    imagine: nginx:mainline-alpine
    container_name: nginx
    reporniți: dacă nu este oprit
    volume:
      - /data/docker/nginx:/etc/nginx
      - /var/log/nginx:/var/log/nginx
      - /var/run:/var/run
      - /var/cache/nginx
    porturi:
      - „80:80”
    retele:
      - coloana vertebrală
      - exterior

retele:
  coloana vertebrala:
    extern: adevărat
  exterior:
    extern: adevărat

Face http://192.168.1.148/ de pe laptopul meu returnează standardul „Mesajul Nginx este instalat”.

De ce atunci http://192.168.1.148/docker-compose-ui/ de pe laptopul meu returnează doar o eroare HTTP 404 pagină?

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.