I have nginx configured to be my externally visible webserver which talks to a backend over HTTP.
The scenario I want to achieve is:
- Client makes HTTP request to nginx which is redirect to the same URL but over HTTPS
- nginx proxies request over HTTP to the backend
- nginx receives response from backend over HTTP.
- nginx passes this back to the client over HTTPS
My current config (where backend is configured correctly) is:
server { listen 80; server_name localhost; location ~ .* { proxy_pass http://backend; proxy_redirect http://backend https://$host; proxy_set_header Host $host; } }
My problem is the response to the client (step 4) is sent over HTTP not HTTPS. Any ideas?
I'm using the following config in production
The type of proxy you are trying to set up is called a reverse proxy. A quick search for reverse proxy nginx got me this page:
http://intranation.com/entries/2008/09/using-nginx-reverse-proxy/
In addition to adding some useful features like an X-Forwarded-For header (which will give your app visibility into the actual source IP), it specifically does:
Good luck! :)