Puncte:0

Nginx, nu se poate redirecționa domeniul www către domeniul https non www când se utilizează certbot

drapel us

În ciuda faptului că există o mulțime de exemple online, am încercat o mulțime de lucruri, în special folosind instrucțiuni if, dar până acum nu am reușit să-mi configurez vhost corect

Deci vhost-ul meu este

    a1.example.com

www.a1.example.com ar trebui să redirecționeze către https://a1.example.com
a1.example.com ar trebui să redirecționeze către https://a1.example.com

Scopul este de a-l redirecționa către https non-www de fiecare dată.

Acesta este vhost-ul meu până acum, folosesc certbot

Server {
     nume_server a1.example.com www.a1.example.com;
     root /var/www/example/build;

     index index.html index.htm;

     Locație / {
          try_files $uri $uri/ =404;
     }

    asculta [::]:443 ssl ipv6only=on; # gestionat de Certbot
    asculta 443 ssl; # gestionat de Certbot
    ssl_certificate /etc/letsencrypt/live/a1.example.com/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/a1.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ă = a1.example.com) {

    returnează 301 https://$host$request_uri;
   }
     asculta 80;
     asculta [::]:80;
     nume_server a1.example.com www.a1.example.com;
    întoarce 404; # gestionat de Certbot

}

Acest lucru redirecționează de la http la https, dar nu pot face redirecționarea www la nonwww

Înregistrările mele actuale dns sunt

A @ IP
A a1 IP
Domeniul CNAME www
CNAME www.a1 www.a1.domain
Ivan Shatsky avatar
drapel gr
Vă rugăm să acordați atenție că am ratat semnarea întrebării în expresia regex (`^(?:www\.)a1\.example\.com$` în loc de `^(?:www\.)?a1\.example\.com$` ). Am corectat deja răspunsul.
Puncte:1
drapel gr

Cred că cel mai bun răspuns pe acest subiect l-a dat @MichaelHampton Aici. Ca o soluție rapidă, puteți adăuga

dacă ($gazdă = www.a1.example.com) {
    returnează 301 https://a1.example.com$request_uri;
}

la blocarea serverului HTTPS și modificarea dacă ($gazdă = a1.example.com) { ... } în blocul serverului HTTP la

dacă ($gazdă ~ ^(?:www\.)?a1\.example\.com$) {
    returnează 301 https://a1.example.com$request_uri;
}

Oricum, sunt total de acord cu Michael Hampton că nu ar trebui să permiteți certbot-ului să vă modifice configurația nginx și să o folosească numai pentru obținerea/reînnoirea certificatelor (vezi răspunsul lui pentru exemplul de configurare nginx bine scris).

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.