Nginx: rediriger l'adresse IP vers le nom de domaine


12

Avec la configuration Nginx suivante:

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;
}

J'essaie de rediriger http://178.62.136.230/vers http://isitmaintained.com/ mais lorsque je déploie cette configuration, je me retrouve avec l'un Redirect loopou les deux de ces liens.

Qu'est-ce que je fais mal?

Réponses:


30

Essayez ceci sur le deuxième bloc:

server {
    listen 80;
    server_name 178.62.136.230;

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

Le problème est que la deuxième listendirective de bloc serveur est plus spécifique que le premier bloc serveur, elle est donc toujours utilisée. Et comme le deuxième bloc est le seul hôte virtuel pour cette listenspécification, il est toujours utilisé.


Ça a du sens. Mais lorsque j'applique cela, j'obtiens l'erreur suivante: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32:( Et cela n'a pas de sens car mon nom de domaine n'est pas si long.
Matthieu Napoli

Eh bien, pour une raison quelconque, votre configuration nécessite plus d'espace de stockage pour les noms de serveur hôte virtuel dans nginx, vous devez donc simplement augmenter le paramètre.
Tero Kilkanen

Mes excuses pour ne pas avoir essayé directement, j'étais sûr qu'il y avait quelque chose de mal. Mais vous aviez raison, la redirection fonctionne maintenant! Un merci très chaleureux :)
Matthieu Napoli

vous êtes F ***** homme de droite, résolu un de mes problèmes, a voté, thnx
a_m_dev

3

Tu étais proche. Sa réécriture que vous recherchez.

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.
}

5
Ceci rewriteet returnplus encore font exactement la même chose.
Tero Kilkanen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.