Wie sollte ich meinen Server in Nginx benennen, wenn ich einen Umleitungsserver und den Hauptserver habe?

Wie sollte ich meinen Server in Nginx benennen, wenn ich einen Umleitungsserver und den Hauptserver habe?

Angenommen, mein Hauptserver soll dienen https://www.example.comund der Umleitungsserver soll zu umleiten http://www.example.com. https://www.example.comWie soll ich diese beiden Server benennen? Gibt es dafür eine Art bewährte Methode?

Ist der Servername in erster Linie eine persönliche Vorliebe, sodass ich ihm einen beliebigen Namen geben kann?

Antwort1

Sie sollten beide benannt sein www.example.com. Dieser Name ist oft tatsächlich ziemlich wichtig, denn wenn Sie mehr als einen virtuellen Host auf derselben IP-Adresse hosten, nginxwird der Name verwendet, um den virtuellen Host, der die Anfrage verarbeiten soll, mit dem im HostHeader der HTTP-Anfrage abzugleichen. In Ihrem Fall mit zwei virtuellen Hosts, aber unterschiedlichen Protokollen (http/https), wird das Protokoll (oder vielmehr der ListenPort) verwendet, um weiter zwischen den beiden virtuellen Hosts zu unterscheiden.

Antwort2

Die Servernamen sind ein wichtiger Teil Ihrer Nginx-Konfiguration. Wenn Sie mehrere Domänen/Subdomänen von einem Server mit einer einzigen öffentlichen IP aus bedienen, server_nameteilt die Direktive Nginx mit, welcher Server auf eine Anfrage antworten soll. Wenn kein passender Servername vorhanden ist, sucht Nginx als Nächstes nach einem Standardserver, der, falls vorhanden, als eine Art „Catch-All“-Server fungiert.

Hier ist einKonfigurationsbeispielfür die Weiterleitung von http -> https. Dort können Sie auch sehen, wie Sie Server richtig benennen, ohne dass Fehler auftreten.

/etc/nginx/sites-available/www.example.com.vhost

# This server will redirect all http -> https
server {
        # Listen for both IPv4 and IPv6 requests.
        listen 80;
        listen [::]:80;
        server_name www.example.com example.com;

        # This section assuming you're using Let's Encrypt / certbot
        location ^~ /.well-known/acme-challenge/ {
            default_type "text/plain";
            root         /path/to/your/document/root
        }
        location = /.well-known/acme-challenge/ {
            return 404;
        }

        # Here's where your 301 permanent redirect to the https:/www version happens.
        return 301 https://www.example.com$request_uri;

}

# This server will redirect all https requests without www to the version with www
server {
        # Listen for both IPv4 and IPv6 requests and activate http2.
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name example.com;

        ssl on;
        # Paths to certificates assuming you're using Let's Encrypt / certbot
        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
        # There's much more directives you should fine tune for https, but that's another task.

        # Here's where your 301 permanent redirect to the https://www version happens.
        return 301 https://www.example.com$request_uri;
}

# This server will actually server your https content.
server {
        # Listen for both IPv4 and IPv6 requests and activate http2.
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name www.example.com;

        ssl on;
        # Paths to certificates assuming you're using let's encrypt / certbot
        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
        # There's much more directives you should fine tune for https, but that's another task.

        ####
        #
        # Your server directives go here.
        #
        ####
}

verwandte Informationen