Nginx Aynı IP Üzerinde Farklı Etki Alanları


127

Nginx kullanarak aynı sunucuda 2 farklı alan barındırmak istiyorum. Her iki alanı da @ property aracılığıyla bu ana bilgisayara yönlendirdim. 2 farklı sunucu bloğu yapılandırsam da, ne zaman ikinci etki alanına erişmeye çalışsam birincisine yönlendiriyor.

İşte yapılandırmam.

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

Bunu nasıl düzeltebilirim? Teşekkürler.

Yanıtlar:


163

"Dinle" direktifleriniz yanlış. Bu sayfaya bakın: http://nginx.org/en/docs/http/server_names.html .

Onlar olmalıdır

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

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

Not, sadece ilgili satırları ekledim. Diğer her şey yolunda görünüyordu ama açıklık için onu sildim. Bunu test etmek için, fiilen php sunmadan önce her sunucudan bir metin dosyası sunmayı deneyebilirsiniz. Bu yüzden orada 'kök' yönergesini bıraktım.


9
Bu benim için düzeltti. Sorun, her iki server {}bloğumda da sever_name yönergelerinin joker karakterler olması gibi görünüyor : .domain1.comve .domain2.com. Bunları olarak değiştirmek server_name www.domain1.com domain1.com;ve server_name www.domain2.com domain2.com;artık bu adresler kullanıldığında görüntülenen her site için doğru sayfa var.
Steve HHH

4
Bunun eski bir yorumu taradığını biliyorum. Ancak bu iki sunucu bloğunun siteler özellikli /?
labarna

3
Kesinlikle, yapılandırmanızı nasıl yapılandırmak istediğinize bağlıdır. Gerçek alan adı başına bir dosyaya sahip olma eğilimindeyim. Her biri birden çok sunucu bloğu içerebilir.
aychedee

5
GERÇEKTEN bunu yapmak istemiyorsun. Www.domain.com veya domain.com'u seçin ve birini diğerine yönlendirin. Aynı içeriğin iki farklı adreste bulunması spam olarak görülür ve arama sıralamanıza büyük zarar verebilir.
aychedee

4
Sadece kullanabilirsiniz .domain.com. Bu, domain.comve ile eşleşen özel bir nginx joker karakteridir *.domain.com. Bakınız: nginx.org/en/docs/http/server_names.html
aychedee
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.