Nginx Https(十五)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录

1. Nginx Rewrite回顾

动静分离

$http_user_agent
手机
	iphone
	andriod
电脑

Nginx Rewrite
	rewrite		url替换			rewrite 正则 真实的文件  flag
	return		http->https  	return  状态码  跳转后的地址(可以使用变量)
		301		permanent
		302		==redirect==
	rewrite ^(.*)$ https://$server_name$1 redirect;
	return 302 https://$server_name$request_uri;
	break
	last

2. DNS解析与网页窜改

DNS劫持原理图

在这里插入图片描述

模拟DNS劫持

实验前提我们本来要通过dns解析之后直接访问源站的我们手动在hosts文件中把通往源站的ip改为被劫持到其他站的ip类似于DNS劫持通过这个站类似于代理站去访问源站然后源站返回资源给代理站代理站替换数据加广告然后返回给用户。

用户访问一个网站然后被dns劫持后引到其他的服务器类似于负载均衡

1web01上的配置相当于源站

在这里插入图片描述

2七层负载均衡的配置相当于被劫持到的站点

用户访问一个网站然后被dns劫持后引到其他的服务器类似于负载均衡
这个服务器

在这里插入图片描述

sub_filter  '' '';
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1548388386797&di=b7ba40a1f0f42f35be5a6be629dda7bb&imgtype=0&src=http%3A%2F%2Fpic125.nipic.com%2Ffile%2F20170324%2F10616187_132808685036_2.jpg" alt="">

解决DNS劫持

如何解决dns劫持在hosts中绑定dns解析就不会被篡改了 并不是源站被篡改了
代码没有被串改只是把数据回传给用户的时候把内容给替换了

加上https就不会被篡改因为代理服务器没有办法
通过CA去验证证书没有办法获取公钥windows可以
验证因为有根证书机构会查CA有专门存放证书的
位置安卓手机也有每一年更新一次

3. SSL安全原理与证书介绍

在这里插入图片描述

在这里插入图片描述

颁发证书的过程

CRL服务器CA把已经吊销的证书放在这个服务器里面会一个一个查
性能非常差
OCSP就当前一个证书进行查询这个性能也不高

在这里插入图片描述

CRL服务器CA把已经吊销的证书放在这个服务器里面会一个一个查
性能非常差  

OCSP就当前一个证书进行查询这个性能也不高
wb服务器nginx支持OCSP的一个开关如果打开的话
那么nginx服务器会自动的到OCSP响应程序上查询证书还有多久过期  

大量客户端访问服务器的时候nginx就是返回证书是否有效。

证书的类型

Https证书的类型
	DV
	OV
	EV

在这里插入图片描述

Https注意事项

在这里插入图片描述

HTTPS证书购买选择

HTTPS证书购买选择
保护1个域名 www
保护5个域名 www images cdn test m
通配符域名 *.oldboy.com

在这里插入图片描述
在这里插入图片描述

4. CA机构颁发SSl加密证书配置单台Nginx支持Https

1环境准备
在这里插入图片描述

#nginx必须有ssl模块
[root@Nginx ~]# nginx -V
 --with-http_ssl_module
 
#创建存放ssl证书的路径
[root@Nginx ~]# mkdir -p /etc/nginx/ssl_key
[root@Nginx ~]# cd /etc/nginx/ssl_key

2使用openssl命令充当CA权威机构创建证书生产不使用此方式生成证书不被互联网认可的黑户证书

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eUFa4caK-1675616116575)(6F01E95D31374BB9BDED619DE460C094)]

生成证书
openssl genrsa -idea -out server.key 2048  

3生成自签证书同时去掉私钥的密码

在这里插入图片描述

openssl req -days 36500 -x509 \
-sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

4证书申请完成后需要了解Nginx如何配置Https
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mQZAN1Uw-1675616116577)(FB29E25EB0FD482B95083213F97DEA49)]

5配置Nginx配置Https实例


在这里插入图片描述

配置nginx
[root@Nginx ~]# cat /etc/nginx/conf.d/ssl.conf
server {
    listen 443;
    server_name s.oldboy.com;
    ssl on;
    ssl_certificate   ssl_key/server.crt;
    ssl_certificate_key  ssl_key/server.key;
    location / {
        root /code;
        index index.html;
    }
}

#准备对应的站点目录, 并重启Nginx服务
[root@Nginx ~]# mkdir -p /code
[root@Nginx ~]# echo "Https" > /code/index.html
[root@Nginx ~]# systemctl restart nginx

如果希望http的流量全部导入到https上


[root@web01 conf.d]# vim s.oldboy.conf 
server {
        listen 443;
        server_name s.oldboy.com;
        root /code;
        ssl on;
        ssl_certificate ssl_key/server.crt;
        ssl_certificate_key ssl_key/server.key;
        location / {
                index index.html;
        }
}
server {
        listen 80;
        server_name s.oldboy.com;
        return 302 https://$server_name$request_uri;
}

5. 配置Nginx集群全站Https

实现原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1负载均衡的配置

upstream website{
        server 172.16.1.7:80;
        server 172.16.1.8:80;
}

server {
        listen  443;  # 新版本 listen 443 ssl;
        server_name s.oldboy.com;
        ssl on;
        ssl_certificate ssl_key/server.crt;
        ssl_certificate_key ssl_key/server.key;
        location / {
                proxy_pass http://website;
                proxy_set_header Host $http_host;
        }

}
server {
        listen 80;
        server_name s.oldboy.com;
        return 302 https://$server_name$request_uri;
}

自己在生成负载均衡上面生成一个密钥因为web01中有了所以直接拉过来用了

在这里插入图片描述

2web01和web02的配置

server{
        listen 80;
        server_name s.oldboy.com;
        root /code;
        location / {
                index index.html;
        }

}

echo "web01..." > /code/index.html  
echo "web02..." > /code/index.html

nignx -t  
systemctl restart nginx

6. 配置Nginx集群全站Https(php问题)

在登录blog.oldboy.com时会出现不能登录或者内容错乱这个是因为php不知道用什么协议只需要告诉php前端用的什么协议就行了。
在后端web中添加参数

fastcgi_param HTTPS on;

1负载均衡器的配置

[root@lb01 conf.d]# cat proxy_oldboy.com.conf 
upstream node {
	server 10.0.0.7:80;
	server 10.0.0.8:80;
}

server {
	listen 80;
	server_name blog.oldboy.com;
	return 302 https://$server_name$request_uri;
}

server {
	listen 443;
	server_name blog.oldboy.com;
	ssl on;
	ssl_certificate ssl_key/server.crt;
   	ssl_certificate_key ssl_key/server.key;
	location / {
		proxy_pass http://node;
		include proxy_params;
	}
}


server {
	listen 80;
	server_name zh.oldboy.com;
	return 302 https://$server_name$request_uri;
}
server {
	listen 443;
	server_name zh.oldboy.com;
	ssl on;
	ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
	location / {
		proxy_pass http://node;
		include proxy_params;
	}
}

2后端web的配置

[root@web01 conf.d]# cat blog.oldboy.com.conf 
server {
	listen 80;
	server_name blog.oldboy.com;
	root /code/wordpress;
	client_max_body_size 100m;

	location / {
		index index.php index.html;
	}

	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param HTTPS on;
		include fastcgi_params;
	}
}

7. 配置阿里云SLB全站HTTPS集群

公网单台服务器配置https

server {
        listen 443;
        server_name blog.lingxiao998.com;
        root /code/wordpress;
        client_max_body_size 100m;
        ssl on;
        ssl_certificate ssl_key/1775624_blog.lingxiao998.com.pem;
        ssl_certificate_key ssl_key/1775624_blog.lingxiao998.com.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 1440m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
}

server {
	listen 80;
	server_name blog.lingxiao998.com;
	return 302 https://$server_name$request_uri;
}

8. 知识点总结

ssl发展史
ca证书机构如何颁发证书。怎么配置证书浏览器怎么验证证书。
配置https证书nginx+web集群配置https   php  fastcgi_param HTTPS on;
阿里云配置单台    阿里云配置SLB


实现全站https 30-40分钟
nginx+多台web+nfs+mysql+redis+https
	wordpress
	zh
	phpmyadmin
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginx