https on a specific directory only?
    Mikhail Mazursky 
    ash2kk at gmail.com
       
    Mon Dec  6 11:00:16 MSK 2010
    
    
  
2010/12/6 TECK <nginx-forum at nginx.us>:
> Hi all,
>
> I recently purchased a SSL certificate and I would like to use it only
> on a specific location:
>
> [code]
> server {
>        listen                          10.30.1.50:80 default_server backlog=1024 rcvbuf=32k
> sndbuf=8k;
>        listen                          10.30.1.50:443 ssl;
>        server_name                     www.domain.com;
>        ssl_certificate                 domain.com.crt;
>        ssl_certificate_key             domain.com.key;
> ...
>        location / {
>                try_files               $uri $uri/ /index.php?$uri&$args;
>        }
>
>        location /dir/ {
>                auth_basic              "Restricted Access";
>                auth_basic_user_file    htpasswd;
>                rewrite         ^       https://www.domain.com/dir$request_uri? permanent;
>        }
> ...
> }
> [/code]
>
> In other words, if you access the scheme with a http value, it redirects
> you to the https scheme.
> I really don't want to use any IF's as conditionals.
> Right now, the rewrite creates a redirect loop. How can I fix that?
You can create separate servers for HTTPS and HTTP or use a rewrite
like this (not tested this config):
       location /dir/ {
               auth_basic              "Restricted Access";
               auth_basic_user_file    htpasswd;
               if ($server_port = 80) {
                 rewrite         ^
https://www.domain.com/dir$request_uri? permanent;
               }
       }
Also, it seems that you should remove extra '/dir' from rewrite rule
and write it like this:
rewrite         ^       https://www.domain.com$request_uri? permanent;
Hope it helps.
    
    
More information about the nginx
mailing list