Nginx proxy inverse à un autre server nginx servant des files statiques

J'ai un server Nginx hébergeant une application Web qui fonctionne bien lors de l'access direct. Sa configuration est en dessous

server { listn 8000 default_server; listn [::]:8000 default_server ipv6only=on; root /data/www/ ; server_name server1.com; location / { try_files $uri $uri/ =404; } location /app/ { } } 

Maintenant, je dois servir cette application à partir d'un autre server Nginx. J'ai donc configuré le proxy inverse comme ci-dessous

 server { listn 80 default_server; listn [::]:80 default_server ipv6only=on; root /data/www/ ; server_name server2.com; location / { try_files $uri $uri/ =404; } location /app/ { proxy_pass http://server1.com:8000/app/; } 

Lorsque j'aie access à l'application à partir du server2, j'ai des erreurs comme ci-dessous, par exemple lorsque j'arrive à http://server2.com/app/css/app.css (désolé, aucun représentant pour publier des liens)

[erreur] 6601 # 0: * 1 open () "/data/www/app/css/app.css" échoué (2: Aucun file ou directory de ce type)

et aucune erreur dans les journaux du server1. Pourquoi nginx cherche-t-il des files statiques dans server2 lorsque je l'ai configuré pour inverser le proxy à server1? La même configuration fonctionne bien dans Apache avec

ProxyPass / app / http: server1: 8000 / application /

ProxyPassReverse / application / http: server1: 8000 / app /

Qu'est-ce qui me manque?

3 Solutions collect form web for “Nginx proxy inverse à un autre server nginx servant des files statiques”

Le problème est votre deuxième instance nginx qui tente de diffuser des files localement:

  location / { try_files $uri $uri/ =404; } 

Il suffit de supprimer cette chose entière si vous souhaitez servir en utilisant http://server2.com/app/ . Si vous souhaitez utiliser http://server2.com/ à la place, mettez à jour la configuration pour qu'elle reflète:

  listn [::]:80 default_server ipv6only=on; server_name server2.com; location / { proxy_pass http://server1.com:8000/app/; } 

Essayez de mettre l'location /app/ location plus spécifique dans votre proxy avant / au-dessus du plus générique / location, car nginx peut gérer les règles de localization d'une manière que vous n'avez pas prévu.

Vous n'avez généralement pas besoin d'append le path d'access à nginx!

Le path de l'location s'ajoute automatiquement

donc ça

 location /app/ { proxy_pass http://server1.com:8000/app/; } 

devrait vraiment être:

  location /app/ { proxy_pass http://server1.com:8000; } 
  • Nginx n'honore pas doit revalider
  • Comment configurer Nginx comme un proxy inverse de caching?
  • Quel port dois-je utiliser pour mon proxy inverse pour Apache 2 à partir de nginx?
  • Nugx reverse proxying Drupal contenue dans Apache
  • ProxyHTMLURLMap ne fonctionne pas dans apache2.4
  • Apache Reverse Proxy pour deux applications Web: une sur localhost une autre sur une machine distante
  • Comment puis-je servir des files statiques avec nginx mais utiliser une URL légèrement différente pour la tornade?
  • Amazon EC2 Elastic Load Balancing - stratégie pour le redémarrage du server de time mort
  • proxy: erreur AH00898: erreur lors de SSL Handshake avec server distant
  • Apache reverse proxy avant la redirection
  • Connectez-vous à un server Tomcat à partir de nginx en tant que proxy inverse
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.