我想确保没有人可以在没有 https 的情况下完成结帐流程。如果不是,我该如何将以 /checktout 开头的任何内容(即 example.com/checkout 和 example.com/checkout/process)重定向到 https。
反之亦然,我不希望任何页面能够通过 https 访问除非它有 /checkout。所以其他内容都应重定向到 http。
答案1
使用静态位置:
server {
listen 80 default;
server_name example.com;
access_log /var/log/nginx/example.com.access.log;
location / {
root /var/www/example.com;
}
location /checkout {
rewrite ^/(.*)$ https://example.com/$1 redirect;
}
}
server {
listen 443;
server_name example.com;
location / {
rewrite ^/(.*)$ http://example.comt/$1 redirect;
}
location /checkout {
root /var/www/example.com/checkout;
}
ssl on;
ssl_certificate myssl.crt;
ssl_certificate_key myssl.key;
}