Nginx com www e sem www

3

Eu tenho uma diretiva de servidor com 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;
            }
}

Isso funciona muito bem quando eu acesso mydomain.net. Mas nada aqui diz para aplicar o material se o usuário tentar acessar www.mydomain.net

A pesquisa que fiz mostra pessoas tendo uma outra diretiva ouvindo com um server_name www.mydomain.net, o que parece ... não ótimo. por exemplo,

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;
            }
}

Basicamente duplicando o código de configuração. Ou, caso contrário, fazer uma reescrita.

Existe uma maneira menor de fazer isso?

    
por willdanceforfun 22.09.2013 / 22:46

1 resposta

8

Você pode usar vários nomes em server_name e até repeti-lo.

Por exemplo, para responder a três nomes de host, você pode fazer algo como:

server {
        server_name example.com www.example.com;
        server_name api.example.com;
    
por 22.09.2013 / 22:50

Tags