


Pourquoi l'exportation statique Suivit.js échoue-t-elle lors de la rafraîchissement de la page après avoir été déployé sur Nginx?
Explication détaillée du problème de défaillance du routage après que le site statique est déployé sur Ninx
Après avoir utilisé l'exportation statique suivante. Cet article explorera les causes et les solutions à ce problème en profondeur.
Description du problème
Supposons que vous ayez créé un projet Next.js, y compris une route /test
, et configuré avec une exportation statique:
{ "sortie": "export" }
Environnement de développement local (exécuter npm run dev
) Accédez localhost:3000/test
Affiches normalement. Mais après le déploiement sur Nginx, l'accès /test
saute sur la page d'accueil. Même si Nginx est configuré avec 404, passez à la page d'accueil:
emplacement / { try_files $ uri $ uri / /index.html; }
Ceci est différent du mode historique de Vue.js, qui fonctionne généralement correctement dans des configurations similaires.
Analyse des problèmes
Lorsque la directive try_files
de Nginx ne trouve pas le fichier routé correspondant dans le répertoire statique, il se repliera à index.html
. Cela semble être comme prévu, car l'exportation statique peut ne pas générer le fichier statique pour l'itinéraire correspondant. Cependant, la cause profonde est la différence entre le mécanisme d'exportation statique de Next.js et les méthodes de traitement du routage des clients.
Solution
Pour résoudre ce problème, vous devez commencer à partir de la configuration de next.js et nginx:
- Next.js Configuration
basePath
: Si votre application Next.js est déployée dans un sous-chemin (par exemple/my-app
), vous devez configurerbasePath
dansnext.config.js
:
module.exports = { Basepath: «/ my-app», }
- Optimisation de la configuration de Nginx: ajustez l'instruction
try_files
de Nginx pour le faire gérer le routage plus précisément:
emplacement / { try_files $ uri $ uri / /my-app/index.html; # Si déployé sous / my-app}
Cela garantira que Nginx pointe correctement vers le fichier index.html
dans le répertoire de déploiement lorsque le fichier de routage spécifié ne peut être trouvé.
Utilisez le serveur qui est livré avec Next.js: Évitez d'utiliser directement les fichiers statiques du service Nginx. Il est recommandé d'utiliser le serveur qui est livré avec Next.js et utiliser nginx comme proxy inversé. De cette façon, le traitement du routage est effectué par le serveur suivant.js, évitant le problème de la correspondance de fichiers statique.
Vérifiez les fichiers statiques générés: assurez-vous que l'exportation statique de next.js a correctement généré tous les fichiers de routage nécessaires. Vous pouvez réexporter à l'aide de la
next export
et vérifier la structure du répertoire généré.
Grâce à la méthode ci-dessus, vous pouvez résoudre efficacement le problème de la défaillance de la route d'exportation statique suivante. La méthode à choisir dépend de votre environnement et des exigences de déploiement spécifiques. Si possible, il est recommandé de hiérarchiser l'utilisation du propre serveur et proxy inversé de next.js, qui peut fournir un traitement de routage plus fiable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment confirmer si Nginx est démarré: 1. Utilisez la ligne de commande: SystemCTl Status Nginx (Linux / Unix), netStat -ano | Findstr 80 (Windows); 2. Vérifiez si le port 80 est ouvert; 3. Vérifiez le message de démarrage NGINX dans le journal système; 4. Utilisez des outils tiers, tels que Nagios, Zabbix et Icinga.

Comment configurer Nginx dans Windows? Installez Nginx et créez une configuration d'hôte virtuelle. Modifiez le fichier de configuration principale et incluez la configuration de l'hôte virtuel. Démarrer ou recharger nginx. Testez la configuration et affichez le site Web. Activer sélectivement SSL et configurer les certificats SSL. Définissez sélectivement le pare-feu pour permettre le trafic Port 80 et 443.

Dans Linux, utilisez la commande suivante pour vérifier si Nginx est démarré: SystemCTL Status Nginx Juges Basé sur la sortie de la commande: si "Active: Active (Running)" s'affiche, Nginx est démarré. Si "Active: Inactive (Dead)" est affiché, Nginx est arrêté.

Étapes pour démarrer Nginx dans Linux: Vérifiez si Nginx est installé. Utilisez SystemCTL Start Nginx pour démarrer le service NGINX. Utilisez SystemCTL Activer Nginx pour activer le démarrage automatique de Nginx au démarrage du système. Utilisez SystemCTL Status Nginx pour vérifier que le démarrage est réussi. Visitez http: // localhost dans un navigateur Web pour afficher la page de bienvenue par défaut.

Les méthodes pour afficher l'état en cours d'exécution de Nginx sont: utilisez la commande PS pour afficher l'état du processus; Afficher le fichier de configuration Nginx /etc/nginx/nginx.conf; Utilisez le module d'état NGINX pour activer le point de terminaison d'état; Utilisez des outils de surveillance tels que Prometheus, Zabbix ou Nagios.

Le démarrage d'un serveur Nginx nécessite différentes étapes en fonction des différents systèmes d'exploitation: Système Linux / Unix: Installez le package NGINX (par exemple, en utilisant Apt-Get ou Yum). Utilisez SystemCTL pour démarrer un service NGINX (par exemple, sudo systemctl start nginx). Système Windows: téléchargez et installez les fichiers binaires Windows. Démarrer Nginx à l'aide de l'exécutable Nginx.exe (par exemple, nginx.exe -c conf \ nginx.conf). Peu importe le système d'exploitation que vous utilisez, vous pouvez accéder au serveur IP

Réponse à la question: 304 Erreur non modifiée indique que le navigateur a mis en cache la dernière version de ressource de la demande du client. Solution: 1. Effacer le cache du navigateur; 2. Désactiver le cache du navigateur; 3. Configurer Nginx pour permettre le cache client; 4. Vérifier les autorisations du fichier; 5. Vérifier le hachage du fichier; 6. Désactiver le CDN ou le cache proxy inversé; 7. Redémarrez Nginx.

Le serveur n'a pas l'autorisation d'accéder à la ressource demandée, ce qui donne une erreur NGINX 403. Les solutions incluent: vérifier les autorisations de fichiers. Vérifiez la configuration .htaccess. Vérifiez la configuration de Nginx. Configurez les autorisations Selinux. Vérifiez les règles du pare-feu. Dépanner d'autres causes telles que les problèmes de navigateur, les défaillances du serveur ou d'autres erreurs possibles.
