I have a nginx server running with ssl enabled. 
Currently I have https enabled for all directories.
How enable ssl only for www.example.com/shop/* directory and disable for other??
here is my conf file :
    # Redirect everything to the main site.
server {
  server_name *.example.com;
  listen 80;
  ssl on;
  ssl_certificate /opt/nginx/conf/server.crt;
  ssl_certificate_key /opt/nginx/conf/server.key; 
  keepalive_timeout    70;
  access_log  /home/example/nginx_logs/access.log ;
  error_log  /home/example/nginx_logs/error.log ;
  root /home/example/public_html/example.com;   
  location ~ \.php$ {
      try_files $uri $uri/ /index.php?q=$uri&$args;         
      root          /home/example/public_html/example.com/;
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index  index.php;
      include        /opt/nginx/conf/fastcgi_params;
      #fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script;
      fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
      fastcgi_param  SCRIPT_FILENAME  /home/example/public_html/example.com$fastcgi_script_name;
      index  index.php index.html index.htm;   
  }
    if ($http_host != "example.com") {
        rewrite ^ http://example.com$request_uri permanent;
    }
    include global/restrictions.conf;
    # Additional rules go here.
    #Only include one of the files below.
    include global/wordpress.conf;
#   include global/wordpress-ms-subdir.conf;
#   include global/wordpress-ms-subdomain.conf;
}
tnanks, D
It is easy to achieve in Nginx. There are two steps involved in it.
Here is a quick overview of how it could be done...
server {
  listen 443;
  server_name yourdomain.com;
  # directives for SSL certificates
  # root, index, error_log, access_log directives
  location /shop {
    # directives to handle what's inside /shop, for example
    # try_files $uri $uri/ /index.php;
  }
  location ~ \.php$ {
    # directives to handle PHP files
  }
  # leave everything else to port 80
  location / {
    rewrite ^ http://$host$request_uri permanent;
  }
}
server {
  listen 80;
  server_name yourdomain.com;
  # root, index, error_log, access_log directives
  # redirect yourdomain.com/shop to port 443
  # Please put this before location / block as
  # nginx stops after seeing the first match
  location /shop {
    rewrite ^ https://$host$request_uri permanent;
  }
  location / {
    # directives to handle what's inside /, for example
    # try_files $uri $uri/ /index.php;
  }
  location ~ \.php$ {
    # directives to handle PHP files
  }
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With