it-swarm.com.de

Nginx verschiedene Domänen auf derselben IP

Ich möchte mit nginx 2 verschiedene Domains auf demselben Server hosten. Ich habe beide Domains über die Eigenschaft @ auf diesen Host umgeleitet. Obwohl ich zwei verschiedene Serverblöcke konfiguriere, wird bei jedem Versuch, auf die zweite Domäne zuzugreifen, auf die erste umgeleitet.

Hier ist meine Konfiguration.

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

Wie kann ich das beheben? Vielen Dank.

117
berkayk

Ihre "Listen" -Anweisungen sind falsch. Siehe diese Seite: http://nginx.org/en/docs/http/server_names.html .

Sie sollten sein

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

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

Beachten Sie, dass ich nur die relevanten Zeilen eingefügt habe. Alles andere sah in Ordnung aus, aber ich habe es nur aus Gründen der Übersichtlichkeit gelöscht. Um es zu testen, möchten Sie vielleicht zuerst versuchen, eine Textdatei von jedem Server bereitzustellen, bevor Sie tatsächlich PHP bereitstellen. Deshalb habe ich die "root" -Richtlinie dort gelassen.

154
aychedee