disable 301 redirect for directory / use relative redirect / change scheme

Payam Chychi pchychi at gmail.com
Wed Aug 26 15:53:59 UTC 2015

On 2015-08-26, 8:36 AM, Edho Arief wrote:
> On Thu, Aug 27, 2015 at 12:30 AM, Etienne Champetier
> <champetier.etienne at gmail.com> wrote:
>> Hi,
>> I have this setup
>> browser -> ssl proxy -> nginx
>> browser to ssl proxy is https only
>> ssl proxy to nginx is http only
>> now i browse to "https://exemple.com/aaa", where aaa is a directory,
>> so nginx send back a 301 redirect with "Location: http://exemple.com/aaa/"
>> Is it possible to send https instead of http (in Location),
>> or send a relative header, like "Location: /aaa/",
>> or just disable this redirection (in my case it's ok)
> see if proxy_redirect[1] fits your need.
> http://nginx.org/r/proxy_redirect
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
use a rewrite 302 can easy help. If the client cant reach the intended 
site (say due to internal network/firewalls) then you can also Proxy the 
connection if needed.

here is how the 302 rewrite would look like:
rewrite ^ https://$hostname$request_uri? redirect;

You can also mix this with an if statement in case you only want 
"http://example.com/aaa" to be redirected to HTTPS and not everything

     if ($host = example.com) {
         if ($uri = /aaa/) {
            rewrite ^ https://$hostname$request_uri? redirect;

Something like that, this is untested but should work.
Keep in mind that using IF like this has a performance cost (though 
small, it all depends on number of req/site load... something to keep in 

Payam Chychi

More information about the nginx mailing list