nginx:排除子文件夹被SSLencryption

我已经把我的服务器设置为像我这样的nginx服务器:

server { listen 443; ssl on; ssl_certificate /etc/ssl/certs/example.com.crt; ssl_certificate_key /etc/ssl/private/example.com.key; server_name example.com; ... other things down here.. } 

我如何从SSL中排除目录? 例如,在/静态/游览我有一个解释的Web应用程序,并没有必要encryption。

操作系统:Ubuntu 10.04

我认为你要么设置另一个服务器configuration来侦听端口80,指向同一个文档根目录(并确保应用程序强制SSL或非SSL取决于被访问的URL,所以用户可以'只需从HTTPS中删除'S'),或者使用如下所示的内容: http : //ariejan.net/2011/10/22/automatically-switch-between-ssl-and-non-ssl-with-nginx-unicorn -rails

这是不可能的。 SSL请求被encryption,这意味着服务器在解密请求之前甚至不能分辨URI的样子。 没有办法告诉客户端它应该使用非SSL协议发送某个子目录的请求。

正如Demelziraptor所说,你可以设置两个虚拟主机,一个在端口443上使用SSL,另一个在端口80上不使用SSL。

您可以轻松地设置重写规则,以便SSL vhost上的任何/static/tour请求都将导致redirect到非SSL虚拟主机上的同一页面,反之亦然在非SSL虚拟主机上redirect回SSL虚拟主机。