web-dev-qa-db-fra.com

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

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'essaye de rediriger http://178.62.136.230/ à http://isitmaintained.com/ mais quand je déploie cette configuration, je me retrouve avec un Redirect loop ou ces deux liens.

Qu'est-ce que je fais mal?

12
Matthieu Napoli

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 directive de bloc serveur listen 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 spécification listen, il est toujours utilisé.

30
Tero Kilkanen

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