Puncte:0

Cum se rezolvă redirecționarea non-www către www Nginx?

drapel fr

Aceasta este configurația mea NGinx Web Server

    Server {
        dacă ($gazdă ~ ^[^.]+\.betafox\.net$) {
            returnează 301 https://$host$request_uri;
        } # gestionat de Certbot
    
    
        dacă ($gazdă = www.betafox.net) {
            returnează 301 https://$host$request_uri;
        } # gestionat de Certbot
    
    
        dacă ($gazdă = betafox.net) {
            returnează 301 https://$host$request_uri; 
        } # gestionat de Certbot
    
        asculta 80;
        asculta [::]:80;
    
        #numele serverului _;
        rădăcină /var/www/html;
    
    nume_server betafox.net *.betafox.net;
        #return 301 https://$host$request_uri;
        index index.php index.html index.htm;
        Locație / {
            # try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php?q=$uri&$args;
            proxy_pass https://betafox.net/;
            proxy_redirect https://betafox.net/ $host;
            proxy_set_header Acceptare-Codificare „”;
            proxy_ssl_server_name activat;
        }
        locație ~ \.php$ {
            include snippets/fastcgi-php.conf;
            #fastcgi_pass 127.0.0.1:9000;
            #fastcgi_pass unix:/run/php/php8.0-fpm.sock;
            fastcgi_pass unix:/etc/alternatives/php-fpm.sock;
     }
    
    
    }
    
    Server {
    
    asculta 443 ssl default_server;
            asculta [::]:443 ssl default_server;
    
            rădăcină /var/www/html;
            index index.php index.html index.htm;
    
          # numele serverului _;
            nume_server betafox.net *.betafox.net;
            # Dimensiunea maximă de încărcare a fișierului este de 4 MB - modificați în consecință dacă este necesar
            client_max_body_size 512M;
            client_body_buffer_size 128k;
            includeți fragmente/letsencrypt-nginx-certs.conf;
            includeți fragmente/letsencrypt-nginx-route.conf;
    
            Locație / {
                    # try_files $uri $uri/ =404;
                    try_files $uri $uri/ /index.php?q=$uri&$args;
            }
    pagina de eroare 404 /404.html;
    
            pagina_eroare 500 502 503 504 /50x.html;
            locație = /50x.html {
                    root /usr/share/nginx/html;
            }
    
            locație ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    #fastcgi_pass 127.0.0.1:9000;
                    #fastcgi_pass unix:/var/run/php8.0-fpm.sock;
                    fastcgi_pass unix:/etc/alternatives/php-fpm.sock;
            }
        ssl_certificate /etc/letsencrypt/live/betafox.net-0001/fullchain.pem; # gestionat de Certbot
        ssl_certificate_key /etc/letsencrypt/live/betafox.net-0001/privkey.pem; # gestionat de Certbot
    
    }

Cea mai mare parte a fost modificată automat de Certbot când am instalat certificate SSL atât pentru FQDN-ul meu, cât și pentru subdomenii. Problema cu care mă confrunt este despre redirecționarea URL. URL-ul original este www.betafox.net, când utilizatorul tasta betafox.net este redirecționat către https://betafoxnet.www.betafox.net/ și există un mesaj care spune: Site-ul pe care îl căutați, nu există.

Vreau doar ca toți utilizatorii care tip betafox.net să fie redirecționați www.betafox.net. Cred că Nginx ar putea face asta. Cum pot realiza asa ceva?

djdomi avatar
drapel za
eliminați prima parte regex. Sunt foarte confuz că certbot încă mai folosește dacă altfel o redirecționare de bază
AtomX avatar
drapel fr
Asta nu va afecta subdomeniile SSL Cert? Am un certificat SSL Wildcard activ
Puncte:1
drapel us

Din păcate, Certbot creează redirecționările nginx folosind dacă cu $gazdă variabilă care este problematică.

Cel mai bine este să aveți redirecționarea separat Server secțiunea după cum urmează.

# Redirecționează toate solicitările către adresele URL betafox.net către adresele URL www.betafox.net corespunzătoare
Server {
    asculta 80;
    asculta 443 ssl http2;

    ssl_certificate /etc/letsencrypt/live/betafox.net-0001/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/betafox.net-0001/privkey.pem; # gestionat de Certbot

    nume_server betafox.net;

    return 301 https://www.betafox.net$request_uri;
}

# Redirecționează toate celelalte solicitări HTTP ale subdomeniului către HTTPS.
Server {
    asculta 80;

    nume_server *.betafox.net;

    returnează 301 https://$http_host$request_uri;:
}

# S-a eliminat blocul serverului pentru portul 80, părea lipsit de sens

Server {
    # S-a eliminat default_server, default_server nu ar trebui să fie site-ul web real
    asculta 443 ssl;
    asculta [::]:443 ssl;

    rădăcină /var/www/html;
    index index.php index.html index.htm;

    nume_server betafox.net *.betafox.net;
    # Dimensiunea maximă de încărcare a fișierului este de 4 MB - modificați în consecință dacă este necesar
    client_max_body_size 512M;
    client_body_buffer_size 128k;
    includeți fragmente/letsencrypt-nginx-certs.conf;
    includeți fragmente/letsencrypt-nginx-route.conf;

    Locație / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    pagina de eroare 404 /404.html;

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

    locație ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/etc/alternatives/php-fpm.sock;
    }
    ssl_certificate /etc/letsencrypt/live/betafox.net-0001/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/betafox.net-0001/privkey.pem; # gestionat de Certbot
}
AtomX avatar
drapel fr
Ei bine, funcționează bine totuși, dar există un avertisment `nginx: [warn] în conflict de nume de server "betafox.net" pe 0.0.0.0:443, ignorat`.
AtomX avatar
drapel fr
BTW, ceva provoacă NS_ERROR_REDIRECT_LOOP
AtomX avatar
drapel fr
Această eroare nu se găsește în rădăcina site-ului, ci în secțiunea mea de administrare a rețelei. Nginx returnează codul de răspuns 302 acolo.
AtomX avatar
drapel fr
Îmi pare rău... Când mi-am redenumit baza de date, am uitat să redenumesc datele wp_blog și asta a fost cauza multor redirecționări...

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.