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:

  • Porta JIRA e proxy inverso di Apache
  • Dockerized Apache + SSL dietro NGINX come proxy inverso
  • Come ridurre il numero di socket in TIME_WAIT?
  • perché è la nascita di php-fpm e distrugge centinaia di bambini al secondo senza carico del server?
  • nginx: Redirect traffico https senza sottodominio al sottodominio (non da www a www)
  • Vantaggi dell'utilizzo di Nginx o HA Proxy come Load Balancer
  • 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.

    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.