140

我想使用 nginx 在同一台服务器上托管 2 个不同的域。我通过@属性将两个域重定向到该主机。尽管我配置了 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;
    }
}

我怎样才能解决这个问题?谢谢。

4

1 回答 1

179

你的“听”指令是错误的。请参阅此页面: 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.ini 文件。这就是为什么我把'root'指令留在那里。

于 2012-08-02T13:08:28.540 回答