Nginx разные домены на одном IP


Я хотел бы разместить 2 разных домена на одном сервере с помощью nginx. Я перенаправил оба домена на этот хост через @ property. Хотя я настраиваю 2 разных серверных блока, всякий раз, когда я пытаюсь получить доступ ко второму домену, он перенаправляется на первый.

вот мой конфиг.

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

Как я могу это исправить? Спасибо.

1 107

1 ответ:

ваши директивы "слушать" неверны. Видите эту страницу: http://nginx.org/en/docs/http/server_names.html.

они должны быть

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

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

обратите внимание, я включил только соответствующие строки. Все остальное выглядело нормально, но я просто удалил его для ясности. Чтобы проверить это, вы можете попробовать сначала обслуживать текстовый файл с каждого сервера, прежде чем фактически обслуживать php. Вот почему я оставил там директиву "root".