Nginx Domini diversi sullo stesso IP


127

Vorrei ospitare 2 domini diversi nello stesso server utilizzando nginx. Ho reindirizzato entrambi i domini a questo host tramite la proprietà @. Sebbene io configuri 2 diversi blocchi di server, ogni volta che provo ad accedere al secondo dominio, reindirizza al primo.

Ecco la mia configurazione.

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

Come posso risolvere questo problema? Grazie.

Risposte:


163

Le tue direttive "ascolta" sono sbagliate. Vedi questa pagina: http://nginx.org/en/docs/http/server_names.html .

Dovrebbero essere

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

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

Nota, ho incluso solo le righe pertinenti. Tutto il resto sembrava a posto ma l'ho cancellato per chiarezza. Per testarlo potresti provare a servire un file di testo da ogni server prima di servire effettivamente php. Ecco perché ho lasciato lì la direttiva "root".


9
Questo l'ha risolto per me. Il problema sembra essere stato che in entrambi i miei server {}blocchi, le direttive sever_name erano caratteri jolly: .domain1.come .domain2.com. Cambiandoli in server_name www.domain1.com domain1.com;e server_name www.domain2.com domain2.com;ora viene visualizzata la pagina corretta per ogni sito quando vengono utilizzati quegli indirizzi.
Steve HHH

4
So che questo sta tirando fuori un antico commento. Ma presumo che questi due blocchi server potrebbero essere in file di configurazione separati in siti abilitati /?
labarna

3
Assolutamente, dipende solo da come vuoi strutturare la tua configurazione. Tendo ad avere un file per dominio reale. Ognuno dei quali potrebbe contenere più blocchi server.
aychedee

5
DAVVERO non vuoi farlo. Scegli www.domain.com o domain.com e reindirizza l'uno all'altro. Avere lo stesso contenuto a due indirizzi diversi è considerato spam e può danneggiare gravemente il posizionamento nella ricerca.
aychedee

4
Puoi anche usare solo .domain.com. È uno speciale carattere jolly nginx che corrisponde a domain.come *.domain.com. Vedi: nginx.org/en/docs/http/server_names.html
aychedee
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.