Comment faire pour que nginx renvoie toujours un fichier personnalisé 404 pour l'hôte par défaut
J'ai nginx 0.8.53 mis en place avec certains hôtes virtuels qui fonctionnent comme je veux. Cependant, en raison de nginx "meilleure correspondance" sur les hôtes virtuels, j'ai besoin d'ajouter un hôte par défaut pour attraper toutes les demandes qui ne sont pas spécifiques de l'hôte virtuel. Je voudrais l'hôte par défaut pour retourner une page 404 qui ne veut pas dire que je suis en cours d'exécution nginx 0.8.53.
Je présume que cela doit être quelque chose comme:
# The default server.
#
server {
listen 80 default_server;
server_name everythingelse;
# Everything is a 404
location /{
return 404;
}
error_page 404 /opt/local/html/404.html;
}
Mais cela renvoie toujours la valeur par défaut de nginx page 404 qui a le numéro de version.. Il semble que le "retour 404' ignore 'error_page' config..
source d'informationauteur Tim P
Vous devez vous connecter pour publier un commentaire.
Ici ce que j'ai dans ma conf pour le faire fonctionner:
Très peu de directive dans nginx prendre un chemin du système de fichiers. Vous voulez quelque chose comme:
Déplacer le error_page directive de la conf avant de retour d'appel de 404.
Cela devrait fonctionner:
Cela utiliser le même personnalisé pour tous les sites (serveurs). Vous devez ajouter l'erreur docs emplacement.
Depuis deux
root
eterror_page
sont valables directives à l'adresse http bloc de portée, on peut exploiter le comportement de l'héritage de configuration de nginx.De partager des pages d'erreur personnalisées entre tous mes vhosts (de sorte que les demandes sur des inconnus virtuels ou le manque de ressources dans les vhosts obtenir mes pages d'erreur personnalisées comme une réponse selon error_page définition), j'ai utiliser la recette suivante.
1/ Ajouter ces trois lignes de
/etc/nginx/nginx.conf
2/ Créer
/etc/nginx/sites-available/catchall
avec l'extrait de code suivant comme un «fourre tout» serveur virtuel par défaut.3/ Créer 404.html et 500.html fichiers dans chaque racine du document ont été une erreur personnalisée doit être utilisé (ou le lien dans /var/www/whatever), sinon par défaut seront utilisés à la place.
Cela dit, pas toutes les directives ne peut hériter que d'un niveau plus élevé de la portée, et même pire, certains héritage ne se comportent pas de la manière dont nous pourrions nous attendre à première vue.
- La compréhension de la NGINX fichier de Configuration de la structure et le contexte de la configuration
- Intéressant, de SORTE que le fil: L'emplacement de nidification
(À l'aide de
Debian9
etnginx/1.10.3
)