rewrite all locations to https except one

Maxim Dounin mdounin at mdounin.ru
Thu Oct 18 09:22:26 UTC 2012


Hello!

On Thu, Oct 18, 2012 at 05:17:27AM -0400, karolis wrote:

> Hi Everyone,
> 
> i have this problem with rewrite. As subject says i want to rewrite all
> locations to https except one, that should remain http. But that one with
> http isn't redirecting properly. I'm using nginx 1.2.2 version. Here's my
> conf:
> 
> server {
>   client_max_body_size 500M;
>   listen 80;
>   server_name alis.am.lt;
>   #rewrite ^(.*) https://$host$1 permanent;
>   #rewrite ^ https://$server_name$request_uri? permanent;
> 
>   location / {
>     rewrite ^(.*) https://$host$1 permanent;
>     proxy_pass  http://www_serveriai_80;
>     proxy_set_header Host $http_host;
>   }

Just a side note: it doesn't make sense to write proxy_pass here.  
Using

    location / {
        rewrite ^(.*) https://$host$1 permanent;
    }

would be enough.  Or, better,

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

>   location /SomeService {
>     rewrite ^(.*) http://$host$1 permanent;

This will create infinite loop, as you try to redirect back to the 
same address.  Just remove this rewrite.

>     proxy_method         POST;
>     proxy_pass              http://10.255.6.120:8080/SomeService;
>     proxy_set_header Host $http_host;
>     #proxy_redirect          default;
>     #proxy_set_header        Host            $host;
>     #proxy_set_header        X-Real-IP       $remote_addr;
>     #proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
>   }
> 
> 
> I really appreciate any help. Thanks!

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



More information about the nginx mailing list