142 votes

Nginx Différents Domaines sur Même IP

Je souhaite héberger 2 domaines différents sur le même serveur à l'aide de nginx. J'ai redirigé les deux domaines vers cet hôte via @ property. Bien que je configure 2 blocs de serveur différents, chaque fois que j'essaie d'accéder à un deuxième domaine, il redirige le premier.

Voici ma config.

 server {
    listen      www.domain1.com:80;
    access_log  /var/log/nginx/host.domain1.access.log  main;
    root /var/www/domain1;
    server_name www.domain1.com;

    location ~ \.php$ {
        # Security: must set cgi.fixpathinfo to 0 in php.ini!
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME         $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include /etc/nginx/fastcgi_params;
    }
}

server {
    listen       www.domain2.com:80;
    access_log  /var/log/nginx/host.domain2.access.log  main;
    root /var/www/domain2;
    server_name www.domain2.com;

    location ~ \.php$ {
        # Security: must set cgi.fixpathinfo to 0 in php.ini!
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME         $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include /etc/nginx/fastcgi_params;
    }
}
 

Comment puis-je réparer cela? Merci.

183voto

aychedee Points 7352

Vos directives d'écoute sont fausses. Voir cette page: http://nginx.org/en/docs/http/server_names.html .

Ils devraient être

 server {
    listen      80;
    server_name www.domain1.com;
    root /var/www/domain1;
}

server {
    listen       80;
    server_name www.domain2.com;
    root /var/www/domain2;
}
 

Remarque, je n'ai inclus que les lignes pertinentes. Tout le reste avait l'air correct mais je l'ai simplement supprimé pour plus de clarté. Pour le tester, vous pouvez essayer de servir un fichier texte de chaque serveur avant de servir php. C'est pourquoi j'ai laissé la directive "racine" à l'intérieur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X