Puncte:0

Nginx nu ascultă pe porturi noi cu systemctl reîncărcați nginx după ce a adăugat configurația cu un nou port

drapel vn

Nu sunt sigur cum pot rezuma rapid această problemă, așa că îmi voi pune scenariul în puncte:

  • Instalare normală de bază nginx
  • Folosesc doar https(443), așa că am eliminat toate configurațiile http(80).
  • Când porniți nginx (sau repornire it), procesul pare să asculte și pe portul 80 (ss -tulp)
  • Când adaug o configurație în /etc/nginx/sites-enabled cu un ascultător pe http(80) și apoi;
  • Reîncărcați nginx, folosind systemctl reîncărcați nginx (notă: reîncărcați, nu reporniți)
  • Nu funcționează, ca și cum nginx încă nu ascultă traficul pe portul 80
  • Dacă fug systemctl reporniți nginx functioneaza.

Am observat acest lucru, deoarece LetsEncrypt nu mi-a putut reînnoi certificatele. După ce am investigat problema, am observat comportamentul descris mai sus.
Deoarece nu am ascultat configurația nginx pe http(80), cred că nginx pur și simplu nu adaugă niciun ascultător sau ceva de genul acesta când pornesc nginx (deși portul 80 a fost revendicat de nginx)
Și dacă Certbot încearcă apoi să-mi reînnoiască certificatele, ar adăuga o configurație temporară http(80) în directorul de configurare nginx, urmată probabil de o „reîncărcare” a nginx, mai degrabă decât o repornire (care este așa cum era de așteptat și așa cum ar trebui)
Dar din moment ce nginx a fost a început fără http(80) config, nu a procesat traficul de la LetsEncrypt către acea configurație de provocare temporară.
Soluția mea a fost destul de simplă, să adaug un bloc de configurare http(80) de bază la nginx cu doar a întoarce 404; și repornit nginx. După aceea, Certbot a funcționat bine și mi-a putut reînnoi toate certificatele.

Mă întrebam dacă acesta este un comportament așteptat sau dacă acesta este o eroare (cunoscută) în Nginx.

Mulțumiri

Actualizați:

Versiunea nginx: nginx/1.18.0
Debian 11 (Bullseye)
drapel cn
Ar trebui să ne împărtășiți configurația reală pentru ca noi să vă putem ajuta cu asta.
Jesse avatar
drapel vn
@shearn89 nu sunt sigur cum ar ajuta configurația mea. Deoarece configurația în sine nu pare relevantă, mai degrabă lipsa de configurare pare să cauzeze problema. Dacă nu am o configurație care să asculte pe portul 80 și dacă apoi adaug o configurație pentru portul 80 (nu contează care configurație), atunci o reîncărcare a serviciului nu dă eroare, dar nici nu ascultă pe portul 80. Trebuie să repornesc serviciul, înainte ca configurația să fie operațională. În timp ce în mod normal o reîncărcare este suficientă.
drapel cn
Spui că „ai eliminat toate configurațiile http(80)” și apoi „ai adăugat o configurație în...”. Încercarea de a ghici cum arată configurația dvs. din descriere este dificilă și predispusă la erori. Dacă îl adăugați la întrebare, vă putem spune dacă este o configurare greșită a unei erori în Nginx.
Jesse avatar
drapel vn
Ei bine, problema este că nu funcționează așa cum era de așteptat când nu ofer acea configurație. Cu acea configurație funcționează, așa că din nou, nu sunt sigur cum ar ajuta furnizarea configurației. Dar așa cum am spus în postarea inițială, configurația mea este doar un return 404; asculta 80; numele serverului _; întoarce 404;
Puncte:0
drapel cn

Nu cred că este o eroare, cred că este ceva greșit la capătul tău. Nu vă pot recrea problema.

Am creat o nouă instanță EC2 cu Amazon Linux și am instalat nginx.

Serverul http a comentat, https necomentat și certificate generate:

#    Server {
# asculta 80;
# asculta [::]:80;
#        numele serverului  _;
# root /usr/share/nginx/html;
#
# # Încărcați fișierele de configurare pentru blocul de server implicit.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# locație = /404.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# locație = /50x.html {
# }
# }

    Server {
        asculta 443 ssl http2;
        asculta [::]:443 ssl http2;
        numele serverului  _;
        root /usr/share/nginx/html;

        ssl_certificate „/etc/pki/nginx/cert.pem”;
        ssl_certificate_key „/etc/pki/nginx/key.pem”;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 10m;
        # ssl_ciphers PROFIL=SISTEM;
        # ssl_prefer_server_ciphers activat;

        # Încărcați fișierele de configurare pentru blocul de server implicit.
        includ /etc/nginx/default.d/*.conf;

        pagina de eroare 404 /404.html;
            locație = /40x.html {
        }

        pagina_eroare 500 502 503 504 /50x.html;
            locație = /50x.html {
        }
    }

Certificate:

[root@ip-10-0-0-110 nginx]# ls -l /etc/pki/nginx/
total 8
-rw-r--r-- 1 nginx nginx 2155 4 februarie 09:28 cert.pem
-rw-r--r-- 1 nginx nginx 3272 4 februarie 09:28 key.pem

Porniți serverul și portul 80 nu este în uz, dar 443 este:

[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':80'
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':443'
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* utilizatori:(("nginx",pid=32264,fd=6),("nginx",pid=32262,fd=6),("nginx",("nginx", pid=32205,fd=6))
tcp LISTEN 0 511 [::]:443 [::]:* utilizatori:(("nginx",pid=32264,fd=7),("nginx",pid=32262,fd=7),("nginx ",pid=32205,fd=7))

Anulați comentariul HTTP și faceți a systemctl reîncărcați nginx, și ambele sunt în uz:

[root@ip-10-0-0-110 nginx]# vim /etc/nginx/nginx.conf
[root@ip-10-0-0-110 nginx]# systemctl reîncărcare nginx
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':443'
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* utilizatori:(("nginx",pid=32288,fd=6),("nginx",pid=32287,fd=6),("nginx", pid=32205,fd=6))
tcp LISTEN 0 511 [::]:443 [::]:* utilizatori:(("nginx",pid=32288,fd=7),("nginx",pid=32287,fd=7),("nginx ",pid=32205,fd=7))
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':80'
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* utilizatori:(("nginx",pid=32288,fd=13),("nginx",pid=32287,fd=13),("nginx", pid=32205,fd=13))
tcp LISTEN 0 511 [::]:80 [::]:* utilizatori:(("nginx",pid=32288,fd=14),("nginx",pid=32287,fd=14),("nginx ",pid=32205,fd=14))
[root@ip-10-0-0-110 nginx]#

Comentați-l și reîncărcați din nou, doar 443 ascultă.

Versiunea instalată:

[root@ip-10-0-0-110 nginx]# lista yum nginx
Pluginuri încărcate: extras_suggestions, langpacks, priorities, update-motd
Pachete instalate
nginx.x86_64 1:1.20.0-2.amzn2.0.4
Jesse avatar
drapel vn
Ah, am uitat să menționez versiunea mea: „nginx version: nginx/1.18.0” pe Debian 11. Voi verifica dacă o pot reproduce la instalarea proaspătă. Poate se rezolvă în 1.20

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.