Rediriger nginx config server_name à la page erreur 404 personnalisée

Je suis nouveau sur nginx configs et ont passé beaucoup de temps à googler jusqu'à présent. Je suis en train de créer une base très nginx fichier de config pour être utilisés dans un "redirect" server.

Les utilisateurs devront point de nu domaines (example.com) par Un record pour mon rediriger l'adresse IP du serveur, et le 'www' enregistrement par enregistrement CNAME vers un autre serveur.

Le but de la redirection serveur, puis d'effectuer une redirection 301 de tout/générique nu domaines de retour pour le " www "version" de la domaine de sorte qu'il peut être géré correctement par mon autre serveur.

Mais j'ai aussi envie de rattraper tout mal configuré " www " les domaines qui pointent vers mon IP du serveur par Un record, et il suffit de les diriger vers une page d'erreur personnalisée sur la redirection serveur avec des instructions supplémentaires sur la façon de régler leur compte correctement de mon service.

Voici ce que j'ai. Il fonctionne, mais depuis que je suis nouveau à l'écriture de configs, je me demandais si il ya une meilleure façon de gérer la redirection vers la page d'erreur personnalisée dans le premier bloc de serveur. TIA!

#redirect to error page if begins with 'www.'

server {
    listen 80;
    server_name ~^www.; #only matches if starts with 'www.'. Is this good enough?
    rewrite ^(.*)$ /404.html; #is this the correct way to direct to a custom error page?

    error_page 404 /404.html;

    location  = /404.html {
        root /usr/share/nginx/html;
       }
    }

#no match, so redirect to www.example.com

server {
    listen 80 default_server;
    rewrite ^(.*)$ $scheme://www.$host$1 permanent;
}
InformationsquelleAutor bryanus | 2014-04-16