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;
}
Vous devez vous connecter pour publier un commentaire.
Préfixe/suffixe de nom de serveur correspondant est plus rapide et plus facile que de regexp.
Aussi, il n'y a pas de raison d'utiliser la réécriture. Vous souhaitez retourner un code d'erreur 404, donc, il ne et nginx va faire tout le reste. BTW, avec réécrire, vous retournez
200 OK
avec le contenu de/404.html
au lieu de404 Not Found
.Si elle est ici: