我已经像这样设置了我的 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 中排除目录?例如,在 /static/tour 下,我有一个解释 Web 应用程序的游览,无需对其进行加密。
操作系统:Ubuntu 10.04
答案1
我认为您要么想要设置另一个服务器配置来监听端口 80,指向同一个文档根目录(并确保应用程序根据访问的 URL 强制使用 SSL 或非 SSL,这样用户就不能直接从 HTTPS 中删除“S”),或者使用如下方法:http://ariejan.net/2011/10/22/automatically-switch-between-ssl-and-non-ssl-with-nginx-unicorn-rails
答案2
这是不可能的。SSL 请求是加密的,这意味着服务器在解密请求之前甚至无法知道 URI 是什么样子。没有办法告诉客户端它应该使用非 SSL 协议发送对某个子目录的请求。
正如 Demelziraptor 所说,您可以设置两个虚拟主机,一个在端口 443 上使用 SSL,另一个在端口 80 上不使用 SSL。
您可以轻松设置重写规则,以便/static/tour
SSL 虚拟主机上的任何请求都会导致重定向到非 SSL 虚拟主机上的同一页面,反之亦然,非 SSL 虚拟主机上的同一页面会重定向回 SSL 虚拟主机。