Reverse Proxy – Rimuovi la sottodirectory

Nel prossimo futuro avrò 3 server nginx. Uno è un proxy inverso per SSL per le altre due. Così, ad esempio, vado a:

https://www.mysitename.com/site1 

I due altri server in questo esempio sono site1 e site2. Ho installato il certificato SSL sul proxy e voglio utilizzare un proxy inverso (SSL non è necessario perché tutti e 3 sono su una networking interna). Per scopi di prova ho su nginx ascoltare su 443 per SSL / reverse-proxy, ascoltare port 8081 che è un'applicazione per i binari per site1 e 8082 per site2.

  • Come distriggersre TLSv1.0 e TLSv1.1 in Nginx
  • Righe SSL: SSL23_WRITE: ssl handshake failure, nginx su CentOS 7
  • a monte prematuramente chiuso durante la lettura dell'intestazione di risposta dal 502 Bad GateWay a monte
  • Autorizzazione negata per fastcgi_pass utilizzando PHP7
  • Imansible accedere a MediaWiki dopo averlo spostato da Apache a Nginx
  • Nginx con HTTP2 abilitato scarica tutto
  • Ho questo…

     server { listen 443; server_name mysitename.com; ssl on; ssl_certificate ssl/mysitename.com.crt; ssl_certificate_key ssl/mysitename.com.key; keepalive_timeout 60; location /site1 { proxy_pass http://localhost:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect http:// https://; } location /site2 { proxy_pass http://localhost:8082; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect http:// https://; } } 

    Quindi, quando visito www.mysitename.com/site1 voglio che in sostanza ritorni che normalmente venga da localhost: 8081 (o più tardi giù la linea un IP interno per un altro server).

    C'è un modo per farlo strappare il "sito1" dalla chiamata localhost? Quello che sembra sta facendo è l'utilizzo di localhost: 8081 / site1. I siti site1 e site2 sono di natura "/ login / index" o "/ whatever / list", ecc, senza "site1".

    Ci sono anche reindirizzamenti nei controller di sito (utilizzando redirect_to) che vanno da cose come / login / index a / whatever / list.

    Devo ridisegnare gli URL del sito per utilizzare il sito1? Oppure il proxy NGINX può capitare?

    Grazie.

    One Solution collect form web for “Reverse Proxy – Rimuovi la sottodirectory”

    Citando http://nginx.org/r/proxy_pass :

    Se il proxy_pass è specificato con URI, quando si passa una richiesta al server, una parte di un URI di richiesta normalizzata corrispondente alla posizione viene sostituita da un URI specificato nella direttiva:

     location /name/ { proxy_pass http://127.0.0.1/remote/; } 

    Vale a dire, è necessario utilizzare proxy_pass come questo:

     location /site1/ { proxy_pass http://localhost:8081/; ... } 

    Notare la trailing / nella direttiva proxy_passproxy_pass – sostituirà parte dell'URI originale corrispondente alla posizione, cioè /site1/ .

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