web-dev-qa-db-fra.com

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.

117
berkayk

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 d'abord un fichier texte à partir de chaque serveur avant de servir php. C'est pourquoi j'ai laissé la directive "racine" à l'intérieur.

154
aychedee