带 www 和不带 www 的 Nginx

带 www 和不带 www 的 Nginx

我有一个 nginx 服务器指令:

    server {
            listen 80;
            server_name mydomain.net;
            root /home/sites/mydomain.net;

            location ~ \.php$ {
                    fastcgi_pass    127.0.0.1:9000;
                    include         fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME /home/sites/mydomain.net$fastcgi_script_name;
                    fastcgi_index   index.php;
            }
}

当我访问 mydomain.net 时,这个功能很好用。但是这里没有说如果用户访问 www.mydomain.net,则应用这些内容

我所做的搜索显示人们有一个完整的其他指令,使用 server_name www.mydomain.net 进行监听,这似乎不太好。例如

server {
            listen 80;
            server_name www.mydomain.net;
            root /home/sites/mydomain.net;

            location ~ \.php$ {
                    fastcgi_pass    127.0.0.1:9000;
                    include         fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME /home/sites/mydomain.net$fastcgi_script_name;
                    fastcgi_index   index.php;
            }
}

基本上就是将配置代码加倍。或者进行重写。

有没有更简单的方法可以做到这一点?

答案1

您可以使用多个名称server_name,甚至可以重复。

例如,要回答三个主机名,您可以执行以下操作:

server {
        server_name example.com www.example.com;
        server_name api.example.com;

相关内容