J'essaye de déployer une application de réaction avec le proxy inverse nginx.
Mon bloc de configuration de serveur (/etc/nginx/sites-available/app2.conf) est le suivant:
curl http://localhost:3001
J'utilise un docker pour exécuter la réaction app avec le port 3001 exposé. J'ai essayé d'utiliser curl pour voir si cela fonctionne. La commande curl fonctionne comme prévu.
server { listen 80; listen[::]:80; root/srv/app2/build; index index.html index.html; server_name _; location / { proxy_pass http://localhost:3001/; try_files $uri $uri/ =404; } }
Cependant, lorsque j'ai essayé d'exécuter dans mon navigateur Web, j'ai eu l'erreur suivante:
Échec du chargement de la ressource: le serveur a répondu avec un statut de 404 (non trouvé) main.8ea061ea.chunk.css
Échec du chargement de la ressource: le serveur a répondu avec un état 404 (Introuvable) main.dcd07bc1.chunk.js
Échec du chargement de la ressource: le serveur a répondu avec un état 404 (Non trouvé) 1.a6f3a221.chunk.js
Échec du chargement de la ressource: le serveur a répondu avec un état 404 (Introuvable) main.dcd07bc1.chunk.js
Échec du chargement de la ressource: le serveur a répondu avec un état 404 (Non trouvé) main.8ea061ea.chunk.css
Il semble qu'il n'a pas réussi à charger tous les fichiers statiques (.css & .js). Quelqu'un sait-il comment résoudre ce problème?
3 Réponses :
essayez d'utiliser cette configuration pour construire le docker
# build environment FROM node:9.6.1 as builder RUN mkdir /usr/src/app WORKDIR /usr/src/app ENV PATH /usr/src/app/node_modules/.bin:$PATH COPY package.json /usr/src/app/package.json RUN npm install --silent RUN npm install react-scripts@1.1.1 -g --silent COPY . /usr/src/app RUN npm run build # production environment FROM nginx:1.13.9-alpine COPY --from=builder /usr/src/app/build /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
n'a jamais eu de problème avec ce script. Vous pourriez manquer une configuration de nginx ou oublier de copier récursivement, qui sait si vous n'avez pas posté le Dockerfile
* note: je ne l'ai pas fait
crédit: https://mherman.org/blog/dockerizing-a-react-app /
Veuillez vérifier ce https: // docs .nginx.com / nginx / guide-admin / serveur-web / service-contenu-statique /
Vous devez spécifier la manière dont les fichiers statiques doivent être diffusés en fonction de l'URL demandée pour les fichiers statiques.
J'espère que cela aide!
Je pense que c'est une solution élégante pour la configuration du proxy inverse nginx.
/etc/nginx/sites-available/app2.conf
sudo ln -s /etc/nginx/sites-available/app2.conf /etc/nginx/sites-enabled/
N'oubliez pas lien symbolique:
server { listen 80; listen [::]:80; server_name example.com www.example.com; location / { proxy_pass http://localhost:3001; # recommended settings proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
quelle est l'url de requête de votre serveur nginx et de votre serveur en amont
Utilisons-nous un serveur express sur le frontend?
Pourriez-vous publier l'URL complète des fichiers css que votre navigateur essaie de récupérer? Vous pouvez essayer de curl ces demandes et voir quelle est la réponse.