Puncte:0

Serverul a refuzat să se conecteze după instalarea SSL prin Certbot | Docker + Nginx, AWS Lightsail

drapel it

Am reușit să instalez SSL prin certbot în containerul meu Nginx Docker, dar după instalare, tot traficul a fost direcționat prin HTTPS refuză să se conecteze.

curl https://www.example.com sau curl https://the_ip_of_server

curl: (7) Nu s-a putut conecta la portul example.com 443 după 9822 ms: Conexiune refuzată

~Portul 443 este deschis pe server (AWS Lisghtsail)

curl http://www.example.com

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.21.6</center>
</body>
</html>

dar cand curl http://the_ip_of_server

<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.21.6</center>
</body>
</html>


aici este nginx.conf

#Limita concurență
limit_conn_zone $binary_remote_addr zone=per_ip:10m;

Server {
nume_server example.com www.example.com;

Locație / {
    proxy_pass http://flask:8080/;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Gazdă $gazdă;
    proxy_redirect dezactivat;
    proxy_intercept_errors activat;

    limit_conn per_ip 12;
}

error_page 404 /notfound.html;
locație /notfound.html {
    rădăcină /var/www/html;
    intern;
}

error_page 500 502 503 504 /maintenance.html;
locație /maintenance.html {
    rădăcină /var/www/html;
    intern;
}

asculta 443 ssl; # gestionat de Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # gestionat de Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # gestionat de Certbot
includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot

}


Server {
dacă ($gazdă = www.example.com) {
    returnează 301 https://$host$request_uri;
} # gestionat de Certbot


dacă ($gazdă = exemplu.com) {
    returnează 301 https://$host$request_uri;
} # gestionat de Certbot


asculta 80 default_server;
nume_server example.com www.example.com;
întoarce 404; # gestionat de Certbot

}

docker-compose.yml

versiunea: „3.7”

Servicii:

balon:
  build: ./Flask App
  container_name: balon
  reporniți: întotdeauna
  mediu inconjurator:
    - APP_NAME=Env
  expune:
    - 8080

nginx:
  build: ./Nginx
  container_name: nginx
  reporniți: întotdeauna
  porturi:
    - „80:80”
Martin avatar
drapel kz
Vă rugăm să oferiți mai multe informații... Aveți nginx care rulează în afara docker ca proxy invers, redirecționând traficul către containerul dvs. docker, corect? Ați încercat să vă conectați la ```http://flask:8080/``` de pe mașina pe care rulează nginx? Este ceva interesant în jurnalele lui nginx? Poate containerul docker a ieșit / s-a prăbușit, ați verificat asta?
Pranav avatar
drapel it
Nginx rulează pe un container docker separat în timp ce flaconul rulează pe altul, am încercat `curl http://flask:8080/` din containerul Nginx și rezultatul este bine. și ambele containere docker funcționează bine (fără blocări) în rețeaua docker.
Martin avatar
drapel kz
bine, v-ați gândit să publicați portul 443 al containerului nginx pe gazdă?
Pranav avatar
drapel it
hmm, portul 80 al containerului este deja publicat în portul 80 al gazdei. Nu sunt sigur ce port al gazdei ar trebui să fie alocat portului 443 al containerului! Voi actualiza întrebarea cu fișierul meu „docker-compose”.
Martin avatar
drapel kz
portul 443 este folosit pentru traficul https, portul 80 este folosit doar pentru traficul http necriptat. Adăugați o linie la fișierul dvs. de scriere similară cu portul de publicare 80: portul 443 al containerului nginx trebuie publicat pe portul 443 al sistemului dvs. gazdă.
Pranav avatar
drapel it
Nu! totuși, conexiunea a refuzat :( dar `http://` funcționează bine fără SSL ofc.
Pranav avatar
drapel it
Hopa scuze, amice! a fost vina mea că am reconstruit `docker-compose`, în cele din urmă, a sfârșit prin a recrea `nginx.conf`, așa că am instalat din nou `certbot` și totul este bine acum! :)
Pranav avatar
drapel it
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/136213/discussion-between-pranav-and-martin).
Puncte:0
drapel it

Pentru a ruta https traficuri, ar fi trebuit să public portul 443 al containerului în portul 443 al gazdei (server).

Adăugând - "443:443" la secțiunea nginx a fișierului docker-compose ar trebui să rezolve această problemă.

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.