rewrite all locations to https except one

Maxim Dounin mdounin at mdounin.ru
Thu Oct 18 12:02:33 UTC 2012


Hello!

On Thu, Oct 18, 2012 at 07:32:03AM -0400, karolis wrote:

> Thanks Maxim for your help. But then where to write this proxy_pass:
> 
> proxy_pass http://www_serveriai_80;
> 
> And still, going further in my site, https drops off and i'm being left only
> with http. How to permanently stay on https, but in this location:
> 
> location /SomeService {
>   proxy_method POST;
>   proxy_pass http://10.255.6.120:8080/SomeService;
>   proxy_set_header Host $http_host;
> 
> to stay always on http.
> Thanks

The server{} block you provided is http-only, not https.  On the 
other hand, what you ask about needs correct configuration of two 
server blocks, one for http, and another one for https.

Here is an example:

    server {
        listen 80;
        server_name www.example.com;

        location / {
            # we are in http server, but want https for normal 
            # requests - redirect to https

            return 301 https://$host$request_uri;
        }

        location /http_only_service {
            ... do real work here ...
        }
    }

    server {
        listen 443 ssl;
        server_name www.example.com;

        ssl_certificate ...
        ssl_certificate_key ...

        location / {
            ... do real work here ...
        }

        location /http_only_service {
            # this is http only service, but we are in https 
            # server - redirect to http

            return 301 http://$host$request_uri;
        }
    }
 
Hope this helps.

-- 
Maxim Dounin
http://nginx.com/support.html



More information about the nginx mailing list