【问题标题】:Nginx Different Domains on Same IPNginx 不同域在同一个 IP
【发布时间】:2012-07-31 04:38:02
【问题描述】:

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

我该如何解决这个问题? 谢谢。

【问题讨论】:

    标签: nginx dns


    【解决方案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.ini 文件。这就是为什么我把'root'指令留在那里。

    【讨论】:

    • 这为我解决了问题。问题似乎是在我的两个server {} 块中,sever_name 指令都是通配符:.domain1.com.domain2.com。将它们更改为 server_name www.domain1.com domain1.com;server_name www.domain2.com domain2.com; 现在可以在使用这些地址时为每个站点显示正确的页面。
    • 我知道这是在挖掘一个古老的评论。但我假设这两个服务器块可以在 sites-enabled/ 的单独配置文件中?
    • 当然,这取决于您希望如何构建配置。我倾向于每个真实域都有一个文件。每个可能包含多个服务器块。
    • 你真的不想那样做。选择 www.domain.com 或 domain.com 并将一个重定向到另一个。在两个不同的地址拥有相同的内容会被视为垃圾邮件,会严重损害您的搜索排名。
    • 您也可以只使用.domain.com。这是一个特殊的 nginx 通配符,匹配 domain.com*.domain.com。见:nginx.org/en/docs/http/server_names.html
    猜你喜欢
    • 2022-12-12
    • 2021-05-10
    • 2014-07-21
    • 2013-07-02
    • 2017-10-15
    • 2015-03-08
    • 2018-12-28
    • 1970-01-01
    • 2014-03-19
    相关资源
    最近更新 更多