Nginx同一IP上的不同域


127

我想使用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;
    }
}

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

Answers:


163

您的“监听”指令是错误的。看到此页面: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”指令的原因。


9
这为我解决了。问题似乎出在我的两个代码server {}块中,sever_name指令都是通配符:.domain1.com.domain2.com。使用这些地址时,将它们更改为server_name www.domain1.com domain1.com;server_name www.domain2.com domain2.com;现在将为每个站点显示正确的页面。
史蒂夫HHH

4
我知道这正在酝酿古老的评论。但是我假设这两个服务器块可能位于启用了sites /的单独配置文件中?
labarna 2013年

3
绝对,这仅取决于您要如何配置配置。我倾向于每个真实域只有一个文件。每个服务器可能包含多个服务器块。
aychedee 2013年

5
您真的不想这样做。选择www.domain.com或domain.com,然后将其中一个重定向到另一个。在两个不同地址拥有相同的内容被视为垃圾邮件,可能会严重损害您的搜索排名。
2014年

4
您也可以使用.domain.com。这是一个特殊的Nginx通配符,它​​与domain.com和匹配*.domain.com。参见:nginx.org/en/docs/http/server_names.html
艾德基2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.