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.

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.

  • Cant connettersi a S3 con nginx
  • Modifica l'URL predefinito di Jenkins standalone
  • Nginx. Eredità della direttiva server.
  • Come rendere NGinx ignorare le autorizzazioni di file?
  • Come eseguire un proxy Nginx di caching esistente utilizzare un altro proxy per ignorare un firewall?
  • nginx come proxy inverso con SSL a monte
  • come fermare irdmi quando si esegue nginx?
  • Nginx "Default" Server?
  • 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.