除特定URL外,Nginx重定向到SSL

时间:2014-09-22 21:16:14

标签: ssl nginx

除了单个网址方案之外,我想将所有流量重定向到我的网站。我希望这个单一的方案能够返回一个响应,表明该站点的这个特定部分只能通过SSL直接使用。

我的网站的conf文件目前看起来部分如此,可以正常重定向所有流量:

server {
    listen 80;
    server_name sub.example.com;
    rewrite ^ https://$server_name$request_uri? permanent;
}

server {
    listen 443;
    ssl on;
    ssl_certificate /etc/nginx/ssl/12345.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    server_name sub.example.com;

    client_max_body_size 4G;

    # ....
}

我想这样做:

1 个答案:

答案 0 :(得分:1)

将服务器级别的重写移动到根位置,然后为API生成错误代码,设置该状态代码的错误页面并将您的人类可读描述放在那里。 假设您返回403,这似乎是合适的,然后湿润得到这个:

root /path/to/webroot;
location / {
    return 301 https://$host$request_uri;
}

location /api/ {
    error_page 403 /api_direct.html;
    deny all;
}

我已设置根目录,以便找到自定义错误页面,根据您的需要进行调整。