Nginx学习笔记——Nginx重要拓展应用,什么是HTTPS,HTTP配置,地址重写及相关案例

Nginx重要拓展应用

一、什么是HTTPS?

HTTP协议是以明文的方式传输数据的,没有进行任何加密,这就造成可能被窃听,篡改,劫持的风险。

HTTPS协议就是在在http上建立SSL加密层,对传输数据进行加密,是HTTP协议的安全版。

HTTPS主要作用:
(1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;
(2)对网站服务器进行真实身份认证。

HTTPS=HTTP+信息加密+完整性校验+身份认证

HTTPS=HTTP+SSL/TLS

SSL与TLS:

TLS是SSL的升级版,使SSL更安全,并使协议的规范更精确和完善,但SSL不能共用。

在认证证书时TLS指定必须与TLS之间交换证书, SSL必须与SSL之间交换证书。

二、HTTPS的配置

1.创建证书和密钥

openssl genrsa > mage.key 2048
  命令     私钥   输出    名字  大小

openssl req -new -x509 -key mage.key > mage.pem
  命令    证书   新  证书格式   私钥         公钥(证书)

2.修改default.conf配置文件

1)https:端口是443 并且要加上ssl

2)将密钥和证书所在目录添加到server中

具体实现如下:

server {
    listen       443 ssl;
    server_name  www.zyy.com;

    #access_log  /var/log/nginx/host.access.log  main;
    ssl_certificate   /root/tls/mage.pem;
    ssl_certificate_key /root/tls/mage.key;
    location / {
        root   /usr/share/nginx/html;
        index zyy.html;
        #rewrite /zyy.html /rewrite.html;
        #rewrite ^(.*) https://www.baidu.com/;

    }

}

三、地址重写

地址重写含义:

​ 用户得到的是经过处理后的URL地址。当服务器获得一个来访的URL请求时,会改写成服务器可以处理的另一个URL。地址重写后地址栏中的地址会变成正确的地址。

地址重写的优势:

​ 可以缩短URL,隐藏实际路径,提高安全性;易于用户记忆。

案例:

案例1:使访问https://www.zyy.com访问的不是zyy.html,而是rewrite.html。

​ 在server loacation 中增添rewrite /zyy.html /rewrite.html;如修改default.conf配置文件中被注释掉的那一行;

注意:这里重写到的是rewrite.html文件,所以应该在对应位置增加rewrite.htm文件。如我的就是在

/usr/share/nginx/html目录下。

案例2:使访问https://www.zyy.com会跳转到https://www.baidu.com/

​ 在server loacation 中添加rewrite ^(.*) https://www.baidu.com/;如修改default.conf配置文件中被注释掉的那一行;

​ 重新启动,现在访问https://www.zyy.com会跳转到https://www.baidu.com/

案例3:当用火狐浏览器访问https://www.zyy.com时,跳转到淘宝页面,其他浏览器访问不会。

​ 在server loacation 中添加

 if   ($http_user_agent   ~*   "firefox"){
    rewrite ^(.*)  https://www.taobao.com/;
 }
案例4:输入http://www.zyy.com访问的仍然是80端口下的main.html.如何让它跳转到https://www.zyy.com

==解决方案:==这是因为http默认的端口为80端口,如果要实现访问http://www.zyy.com跳转到https://www.zyy.com,可以在80端口下的location中增加 rewrite ^(.*) https://www.zyy.com/;强制跳转。

image-20210604105048334

但是这样做,会出现一个问题,如果我要跳转到www.main.com,也会强制跳转https://www.zyy.com/,这如何解决呢?

思路:访问www.main.com是会因为rewrite重写地址而跳转到其他地址,我们只想要当访问地址为http://www.zyy.com才实现强制跳转,所以是不是应该加一个if判断语句?那这个判断语句如何写呢?

结合案例3中的if判断语句,在chrome浏览器开发者模式下,发现host有显示www.zyy.com,因此尝试按照下面代码解决。最终成功实现了。

    if ($http_host   ~*   "www.zyy.com"){
    	rewrite ^(.*) https://www.zyy.com/;
   	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值