如何再nginx中实现SSL加密
要实现https,在apache中,还有ftps
都需要有证书
这个模块用到的各种指令
ssl指令就是是否启用加密,on,off
可以放在http,server这个块中进行加密
在1,15版本中过时了,
要使用,就直接在listen中加上ssl
1.12版本但是考虑到以后不用了,这次也不使用了
用listen指令来代替
listen+ssl,意味,监听的端口,将用加密的方式,就代替了ssl on|off
要选择pem的证书文件
私钥文件
此外还有ssl的协议,主流的协议是tlsv的协议
ssl的session解析
http还是https链接网页都有session的会话消息,这些就可以缓存加速访问
off不启用缓存
none是表面上支持缓存,但实际并不支持缓存
builtin 使用的openssl系统内置的缓存,因为ssl可以调用openssl对应的模块里的缓存,每个worker进程,它的ssl缓存是私有的,将来每个woker进程都有自己的缓存空间
share :多个worker共用一个session信息,共享缓存,需要起个名字,以及缓存的大小
默认5分钟,超时过期了
现在创建个证书,现在不搭键CA了,用自签名的证书
需要输入口令,相当于给私钥加入口令,下次启动服务的时候就要去输入口令
就生成了两个个文件
可以考虑把这个文件解密
现在就没有加密信息了
把证书复制到需要的目录下
现在就可以搭建网站了
检查一下语法
可以启动服务了
现在就可以通过远程客户端访问了
客户端修改hosts文件来指向192.168.30.7
默认是要验证证书的,-k可以忽略检查
自签名证书
能否在一个物理服务器上搭建多个https网站,在apache上做不到,但是在nginx上可以实现
之所以可以实现,是因为支持SNI技术(服务器的名称扩展)
‘想要实现a.com,和B.COM都用证书加密
先申请证书
可以修改makefile文件,不让输入口令
删除128就不是一定要提供口令了
】
私钥文件已经生成,不需要输入口令了
这样就生成了B.com的证书
两个各有各的证书
重新加载服务
客户端hosts对应也要修改,才能测试
这样就实现了在同一个服务器上实现多个https虚拟站点
可以看到证书信息
无效时对于这个证书时不信任的,所以不显示网页
现在信任自己的证书
客户都安调用证书文件
必须要通过CA的证书才有效,自签名证书无效
这个是nginx的特有功能
**重写地址,访问http跳转到https都是用rewrite来实现的,301,302,临时还是永久跳转
**
看一下官方说明
正则表达式,replacement 代替
要用新的url来代替旧的URL
flag标记,有四钟
一旦匹配了last(重新开始新的循环)就类似bash里跳出循环
break就是整个结束了,后面也不做了
301叫永久重定向,302临时重定向
在生产中经常使用到重定向代码
$1代表download/. (media变成了mp3,
$2代表.**
现在想实现网站的跳转功能
修改配置文件
现在取消加密用rewrite来跳转
重新加载,看看能否实现
创建页面
现在就跳转了
但是响应状态没有变化
访问bbs是访问默认网站 了
就把a。com设置为默认网站
两个都是默认网站就搞不清了
原来默认的网站就不应该使用
现在就可以了。访问的时候地址不变,但是实际路径确实真变 了
但是把/去掉了,会如何
301永久重定向
不加这个/斜杠,就代表301的移动
应该把斜线去掉
把斜线去掉再试试
还是301,永久跳转
加上斜线
加上也行,只不过需要跳转一下
curl,浏览器默认是不会跳转的,需要加上-L选项
换个浏览器,没有/也可以进行访问
如果把配置文件里的斜线故意去掉的话d
加斜线和不加斜线实现的机制是不一样的
如果不加斜线/,跳转到就不止bbs了,可能会出现下面的情况了
只是bbs这个目录跳转就写/比较合理
如果改成break会不会有所区别,
就一条,谈论不上有什么区别
redirect,就是临时重定向,对应的是302
现在是200
修改配置文件
头部变成了302,临时重定向
变成了301的永久重定向
当访问一个网站如果不加密的时候,想跳转到加密的网站
要想实现这个功能,就需要有两个网站,一个加密,一个不加密
但是原本是同一个网站看到的信息应该是不一样的,但是现在就是让他有效果,修改成不一样
一般互联网公司都是用临时重定向
重新加载一下配置文件
想看到跳转过去的页面就加个L
因为加密 了还需要+k忽略证书
应该是i ,大I光看头了
能否搭建成一个虚拟网站来实现
虽然代码没有错,但是一直是死循环
最后提醒次数过多
这样就是语法上有错误
是因为当访问https的时候还要进行/的跳转
要用到一个条件判断
当什么条件的时候才进行跳转
访问http的时候进行,https的时候就不进行跳转了
sechma +FQDN+URL+path
sechma对应apache配置文件就有说明
根据http还是https来判断是否跳转
检查语法,重新加载
就成功了
现在就自动地跳转到加密的网站上了
这就是http到https的跳转
rewrite,不仅工作用的多,而且面试也经常问
回到之前的vhosts
想实现当你访问文本的时候才进行跳转到html文件
只要是text就往html跳
但是如果在跳转时候再定义了一个规则
~*
这样又成了一个循环的问题
500,内部服务器错误
四种标签,last break redirect perament
查看是否有变化
还是错误,last相当于默认值
现在就好了
打破了结束的循环,也就不会造成循环了
last容易造成死循环
redirect也属于无限次跳转
加入跳到别的网站,也就不会死循环了
就跳转了
任何的txt文件都往这里跳转
看I报文头部
302临时重定向
面试问,河南hn跳转到henan
跳转是否记录日志
return 是返回响应码
跳转到多少,给你返回多少,也可以直接返回给你的响应码
用return 来实现当用户访问网站的时候,返回拒绝你的访问
就可以加条件来实现
用request_url也是可以的
*如果这个变量带有admin字样,就拒绝访问
~不区分大小写+正则表达式匹配
就被拒绝了
通过浏览器试试
即时有这个网页也是被拒绝的
看不到提示
现在换一个响应码
响应码可以生效只不过提示符出不来
也可以跳转到url里取
只显示404,并没有跳转,看看官方文档怎么说的
指定跳转,就要指定这些响应码才可以
改成307
现在就可以跳转了
防盗链技术