579 Stimmen

Nginx no-www zu www und www zu no-www

Ich verwende nginx in der Rackspace-Cloud nach einer Anleitung Ich habe das Netz durchsucht und kann das Problem bisher nicht lösen.

Ich möchte www.mysite.example zu gehen, um mysite.example als normal in .htaccess aus SEO- und anderen Gründen.

Meine /etc/nginx/sites-available/www.example.com.vhost Konfiguration:

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://example.com$request_uri permanent;
       }

Ich habe auch versucht

server {
       listen 80;
       server_name example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://example.com$request_uri permanent;
       }

Ich habe es auch versucht. Die beiden zweiten Versuche geben Redirect Loop-Fehler.

if ($host = 'www.example.com' ) {
rewrite ^ http://example.com$uri permanent;
}

Mein DNS ist standardmäßig eingerichtet:

site.example 192.192.6.8 A type at 300 seconds
www.site.example 192.192.6.8 A type at 300 seconds

(Beispiel-IPs und -Ordner wurden als Beispiele und als Hilfe für künftige Benutzer verwendet). Ich verwende Ubuntu 11.

1voto

Baatr Punkte 11

Meine Konfiguration war - Nginx + tomcat 9 + Ubuntu 20.04 + spring boot app alle Antworten oben nicht für mich arbeiten - auch nicht funktionieren Upstream-Notation in Nginx-Datei - so ändere ich meine Einstellungen auf diese

Gott sei Dank für certbot - dies nutzen sehr hilfreich, es ist generieren Basisdatei für Ihre Website und dann fügte ich meine Änderungen - um umzuleiten https://www.example.com , http://www.example.com auf nur einen https://example.com

server {
if ($host = www.example.com) {
    return 301 https://example.com$request_uri;
}
    root /var/www/example.com/html;
    index index.html index.htm index.nginx-debian.html;

    server_name example.com www.example.com;

    location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_pass http://127.0.0.1:8080; # This is upstream name, note the variable $scheme in it
      proxy_redirect off;
    }
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = www.example.com) {
        return 301 https://example.com$request_uri;
    } # managed by Certbot
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
        listen 80;
        listen [::]:80;
        server_name example.com www.example.com;
    return 404; # managed by Certbot
}

0voto

karadayi Punkte 2091
if ($host ~* ^www.example.com$) {
    return 301 $scheme://example.com$request_uri;
}

-6voto

undoIT Punkte 611

Wenn Sie Probleme haben, dies zu erreichen, müssen Sie möglicherweise die IP-Adresse Ihres Servers hinzufügen. Zum Beispiel:

server {
listen XXX.XXX.XXX.XXX:80;
listen XXX.XXX.XXX.XXX:443 ssl;
ssl_certificate /var/www/example.com/web/ssl/example.com.crt;
ssl_certificate_key /var/www/example.com/web/ssl/example.com.key;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}

wobei XXX.XXX.XXX.XXX die IP-Adresse ist (offensichtlich).

Hinweis: ssl crt und der Speicherort des Schlüssels müssen definiert werden, um https-Anfragen korrekt umzuleiten

Vergessen Sie nicht, nginx neu zu starten, nachdem Sie die Änderungen vorgenommen haben:

service nginx restart

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X