Nginx rewrite 测试 和SSL工作流程与nginx配置https方法以及源码安装nginx

文章详细介绍了如何在Nginx配置中使用rewrite规则进行路径重定向,包括临时重定向和永久重定向的区别。此外,还涉及了如何配置HTTPS,包括自签名证书的生成和SSL工作流程的抓包分析。最后讲解了Nginx源码的安装步骤。
摘要由CSDN通过智能技术生成

rewrite测试

在nginx文件目录下的配置文件中添加该配置

   server{

    listen 4040;  #监听端口
    location / {   
    root /www/ip/129;   #html文件的存放目录
    index index.html;   #默认返回的html文件
    rewrite /test/test1/test2/(.*).html /$1.html; 
    #将/test/test1/test2/xxx.html路径转换为 html文件存放目录下的xxx.html
    }
}

这样访问/test/test1/test2/test.html 时就会访问存放目录下的test.html文件

访问/test/test1/test2/test1.html 时就会访问存放目录下的test1.html文件

访问/test/test1/test2/test2.html 时就会访问存放目录下的test2.html文件

flag:

redirect(临时重定向):在rewrite /test/test1/test2/(.*).html /$1.html 后面添加redirect可以返回状态码为302的临时重定向响应报文。

permanent(永久重定向):在rewrite /test/test1/test2/(.*).html /$1.html 后面添加permanent可以返回状态码为301的永久重定向响应报文。

nginx配置https

在nginx目录下创建一个cert文件夹cd进去

# 生成CA的私钥
openssl genrsa -out ca.key 2048
# 生成CA的公钥
openssl rsa -in ca.key -pubout -out ca.pub
# 生成CA的申请文件
openssl req -new -key ca.key -out ca.csr
# 生成CA的自签证书
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt -days 365
# 生成服务器端的私钥
openssl genrsa -out server.key 2048
# 生成服务器端的证书申请文件:
openssl req -new -key server.key -out server.csr
# 使用CA机构的ca.crt,以及ca.key为server.csr申请文件签发证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key 
-CAcreateserial -days 3650 -out server.crt

完成后cert文件夹中应有

之后在nginx配置文件中加入

server{
    listen 443 ssl;
    ssl_certificate cert/server.crt; #服务器的证书 也可以用绝对路径
    ssl_certificate_key cert/server.key; #服务器的私钥 也可以用绝对路径
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_protocols SSLv2 TLSv1 TLSv1.2;

    location / {
        root /www/https;
        index index.html;
    }
}

之后浏览器即可使用https协议访问服务器,因为这个证书是我们自签的所以浏览器不认,官方的数字证书要自己去申请。

SSL工作流程

我们对之前的https访问进行抓包,得到了以下几个包

SSL工作流程分为这几个部分:(*是可选的)

 第一阶段:

Client Hello:  browser -> server

传输自己的

tls的版本
随机数:random_client
加密套件:密钥交换算法(产生会话密钥的), 非对称加密的算法,对称加密的算法,散列算法(校验消息的完整性)
压缩算法:
扩展 

 第二阶段:

 Server Hello: server -> browser

传输自己的

tls的版本
随机数:random_server
加密套件: Cipher Suite: Unknown (0xcca8)
压缩算法: null
扩展: 省略

certificate: server -> browser
服务器将自己的证书发送给browser

server key exchange: server-> browser
密钥交换的参数: 公钥和签名

Certificate Request(可以省略):server -> browser

服务器需要客户端来自验身份,客户端才会发送自己的certificate(证书),一般不需要

server hello Done: server-> browser: 告知客户端,服务器这一阶段完成了

第三阶段:

certificate : browser->server(可以省略)
前提:在第二阶段如果有certificate request 包,客户端才会发送自己的certificate给服务器

client key exchange: browser-server
客户端密钥交换提供的参数:公钥(生成会话密钥要用)

change cipher spec: browser->server
编码改变通知:就是一条通知消息: 客户端通知服务器:客户端后边发送的数据,要进行加密了

encypted handshake message: 加密握手消息: 校验消息完整性

对之前所有发送的数据报进行hash(散列):通知服务器,客户端在这一阶段完成了工作

第四阶段:

change cipher spec: 编码改变通知 server - client
通知客户端,后边的数据要进行加密了

enrypted handshake message: server - client
加密握手消息:即对之前客户端和服务器的消息进行加密:消息完整性校验

 Application Data:加密的消息

注意:

在第一阶段的Client Hello中浏览器传递了一个随机数random_client

在第二阶段的Server Hello中服务器也传递了一个随机数random_server

且在第三阶段的client key exchange中浏览器传递了自己的公钥

此时这三个数客户端和服务器端都持有了,之后

客户端和服务器:各自使用加密算法(random_client,random_server,pre-master) 生成 对称加密密钥: session_client_key == session_server_key

这个密钥便是之后客户端和服务器端进行会话时的对称加密密钥,

这样就保证了http报文的安全性,不再是明文传输了
注意:不会再网络中传输会话密钥的.

Nginx 源码安装

第一步:

首先请保证自己的Linux中包含gcc gcc-c++ pcre-devel openssl-devel wget 等软件

如缺少哪个可以用yum install -y 来进行下载

第二步:

下载nginx源码压缩包

wget http://nginx.org/download/nginx-1.24.0.tar.gz

第三步:

解压nginx压缩包

tar -xf nginx-1.24.0.tar.gz

第四步:

进入解压后的文件夹,并进行配置

cd nginx-1.24.0

./configure --prefix=/usr/local/nginx #--prefix= 后面跟编译之后nginx的安装路径

#如报错请检查第一步是否完成

第五步:

根据之前的配置安装nginx

make           #编译源代码

make install  #根据编译后的可执行文件安装

#也可以make && make install 一步到位

之后便可打开自己配置的安装目录下面的sbin目录中启动nginx

cd 第四步自己配置的目录/sbin

./nginx #启动nginx

如不想每次启动都要切到该目录,可以建立nginx文件的软链接并把它放到/usr/sbin目录中去

之后不管你在哪个目录输入nginx系统都会到/usr/sbin目录中通过该软链接,访问并执行链接指向的文件也就是我们安装的nginx文件。

小知识:当你在linux中输入命令时,系统会跑到/usr/sbin目录中查找与输入命令名字一样的文件或目录。(和Windows环境变量中的path类似)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值