对Nginx中的某些路径禁用SSL


11

我有一个网站,我希望所有请求都通过HTTPS完成,但对以开头的路径的URL的请求除外/foo/。如何在Nginx中进行配置?

现在,我使用SSL运行所有请求:

server {
    listen 443;

    ssl on;
    ssl_certificate /home/admin/ssl/ssl.crt;
    ssl_certificate_key /home/admin/ssl/ssl.key;

    server_name www.mydomain.com;

    location / {
        proxy_pass http://localhost:8000;
        ...
    }
}

您是否要强制到该路径的请求不使用SSL,或允许请求不使用SSL?
Shane Madden'5

我想允许对该路径的请求使用HTTP和HTTPS。
hekevintran

Answers:


15

为非SSL端口(端口80)添加第二个服务器条目,以服务/foo/*并将其他所有内容重定向到HTTPS URL。

也许是这样的:

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

    location ~ ^/(foo|foo/.*)$ {
        proxy_pass http://localhost:8000;
        ... 
    }

    location / {
        rewrite  ^ https://$server_name$request_uri? permanent;
    }
}

完美的答案。
hekevintran 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.