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ă?