Nginx inversa il proxy in posizioni nidificate

Sto utilizzando Nginx come proxy inverso per più applicazioni in più server e sto cercando di aggiungere direttive comuni di cache ai file statici di each applicazione.

La mia configuration originale è qualcosa di simile:

location /app1{ ... proxy_pass http://127.0.0.1:8081/app1; } location /app2{ ... proxy_pass http://127.0.0.1:8082/app2; } ... 

Per aggiungere le direttive statiche di file posso aggiungere una posizione nidificata a ciascuna località come questa:

 location /app1{ ... proxy_pass http://127.0.0.1:8081/app1; location ~* \.(css|js|ico|gif|jpg|jpeg|png)$ { expires 1d; ... proxy_pass http://127.0.0.1:8081; } } location /app2{ ... proxy_pass http://127.0.0.1:8082/app2; location ~* \.(css|js|ico|gif|jpg|jpeg|png)$ { expires 1d; ... proxy_pass http://127.0.0.1:8082; } } 

Dal momento che ho qualcosa di simile a 30 applicazioni, sto cercando di semplificare il codice a qualcosa di simile:

 location /app1{ ... proxy_pass http://127.0.0.1:8081/app1; include static_file_config.conf; } location /app2{ ... proxy_pass http://127.0.0.1:8081/app2; include static_file_config.conf; } 

C'è un modo per semplificare il codice in modo da non finire con 30 posizioni identiche per i file statici?

Si prega di notare che each applicazione serve i propri file statici.

  • Come configurare nginx in modo che funzioni con Express?
  • Come impostare un proxy inverso usando nginx?
  • Usa HTTP / 2.0 tra il server di networking inversa-proxy nginx e il webserver backend
  • Trasparentemente fare applicazioni multiple web in un unico indirizzo
  • Una risposta a monte viene tamponata in un file temporaneo
  • Può un Reverse Proxy utilizzare SNI con il passaggio SSL?
  • nginx failover senza bilanciamento del carico
  • Servire più siti HTTPS con un IP in Apache
  • 2 Solutions collect form web for “Nginx inversa il proxy in posizioni nidificate”

    Forse, invece di avere molte posizioni, puoi utilizzare il regex per abbinare un particolare URI alla tua applicazione a monte:

     location ~ /(app)(\d+) { proxy_pass http://127.0.0.1:808$2/$1$2; include static_file_config.conf; } 

    Puoi vedere come funziona qui: https://regex101.com/r/sM3eS9/1

    Ho avuto un problema correlato, ma la mia era collegata ai contenitori di Docker e lo ha risolto facendo quanto segue:

     server { listen 80; server_name some_application_name; port_in_redirect off; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:5555; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /api { rewrite ^/api(.*)$ $1 break; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:5000; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 

    Quanto sopra ha un contenitore in esecuzione su 5555 e la .NET Core Api in esecuzione su 5000 e non ho voluto cambiare le rotte in .NET api in modo che la riscrittura assicurasse che il path fosse corretto per l'API a funciton corrclty.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.