带 www 和不带 www 的 Nginx

wil*_*fun 3 nginx centos6

我有一个带有 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;
            }
}
Run Code Online (Sandbox Code Playgroud)

当我访问 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;
            }
}
Run Code Online (Sandbox Code Playgroud)

基本上将配置代码加倍。或者以其他方式进行重写。

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

Mic*_*ton 8

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

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

server {
        server_name example.com www.example.com;
        server_name api.example.com;
Run Code Online (Sandbox Code Playgroud)

  • 难以置信的简单。 (2认同)