2014-09-22 37 views
0

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

我的网站的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

将在服务器级别的根部位置的重写,然后生成的API错误代码,设置错误页面,该状态码并在那里放置你的人类可读的描述。 比方说,你回到403,这似乎是适当的,那么湿得到这样的:

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

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

我给自己定了根,使自定义错误页,可以发现,调整您的需求。