Nginx: IP-Adresse zum Domainnamen umleiten

12

Mit der folgenden Nginx-Konfiguration:

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    server_name isitmaintained.com;

    ...
}

server {
    listen 178.62.136.230:80;
    server_name 178.62.136.230;

    add_header X-Frame-Options "SAMEORIGIN";

    return 301 $scheme://isitmaintained.com$request_uri;
}

Ich versuche, http://178.62.136.230/auf http://isitmaintained.com/ umzuleiten , aber wenn ich diese Konfiguration bereitstelle, erhalte ich einen Redirect loopoder beide dieser Links.

Was mache ich falsch?

Matthieu Napoli
quelle

Antworten:

30

Versuchen Sie dies im zweiten Block:

server {
    listen 80;
    server_name 178.62.136.230;

    return 301 $scheme://isitmaintained.com$request_uri;
}

Das Problem ist, dass die zweite Serverblock- listenDirektive spezifischer ist als der erste Serverblock, daher wird sie immer verwendet. Und da der zweite Block der einzige virtuelle Host für diese listenSpezifikation ist, wird er immer verwendet.

Tero Kilkanen
quelle
Das macht Sinn. Aber wenn ich dies anwende, erhalte ich die folgende Fehlermeldung: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32:( Und das macht keinen Sinn, weil mein Domainname nicht so lang ist.
Matthieu Napoli
Aus irgendeinem Grund benötigt Ihre Einrichtung mehr Speicherplatz für die Namen der virtuellen Hostserver in Nginx. Sie sollten daher nur die Einstellung erhöhen.
Tero Kilkanen
Ich entschuldige mich dafür, dass ich es nicht direkt versucht habe. Ich war mir sicher, dass etwas nicht stimmte. Aber Sie hatten Recht, die Umleitung funktioniert jetzt! Ein sehr herzliches Dankeschön :)
Matthieu Napoli
Sie sind F ***** richtigen Mann, haben ein Problem von mir gelöst, upvoted, thnx
a_m_dev
3

Du warst nah. Es ist neu zu schreiben, dass Sie suchen.

server {
    listen 178.62.136.230:80;
    server_name 178.62.136.230 isitmaintained.com;

    rewrite  ^/(.*)$  http://www.isitmaintained.com/$1 permanent;
}
server {
    listen 80;
    server_name www.isitmaintained.com;
    # Serve Stuff Here.
}
Ticoombs
quelle
5
Dies rewriteund returnhöher machen genau das Gleiche.
Tero Kilkanen