NginX prefered scheme
Here is another usefull use-case for map
.
Suppose, we have an unified vhost-setup (SSL/non-SSL) and wish handle some URLs encrypted, some other non-encryted and some we don't care about.
First, let's map
$uri
to desired scheme:
map $uri $prefered_scheme { default "http"; ~^/admin "https"; ~^/robots\.txt $scheme; # whatever }
Then, we adjust our config as follows:
server { listen 80 default; listen 443 default ssl; # ... if ($prefered_scheme != $scheme) { return 301 $prefered_scheme://$host$request_uri; } # .... }
This way, the admin interface is always handled encrypted, any other
content as non-encryted and robots.txt
both.