1.不做任何修改实现http跳转https(协议间的跳转): return

[root@web01 conf.d]# cat url.cheng.com.conf
server {
listen 80;
server_name url.cheng.com;
return 302 https://$http_host;
}

2.http跳转https [rewrite]

[root@web01 conf.d]# cat url.cheng.com.conf
server {
listen 80;
server_name url.cheng.com;
rewrite ^/$ https://$http_host;
}

3.rewrite中的flag

  • 地址做改写 rewrite 跳转
1. redirect	302		临时跳转	 旧网站无影响,新网站无排名

[root@web01 conf.d]# cat url.cheng.com.conf
server {
listen 80;
server_name url.cheng.com;
rewrite ^/$ https://$http_host redirect;
}
2. permanent	301		永久跳转     新跳转网站有排名,旧网站排名清空

[root@web01 conf.d]# cat url.cheng.com.conf
server {
listen 80;
server_name url.cheng.com;
rewrite ^/$ https://$http_host permanent;
} http ---> https 302 浏览器不会记住新域名
http ---> https 301 浏览器会记录新域名

4.last 本条规则匹配完成后,继续向下匹配新的location URI规则

[root@web01 conf.d]# cat url.cheng.com.conf
server {
listen 80;
server_name url.cheng.com;
root /code; location / {
rewrite /1.html /2.html last;
rewrite /2.html /3.html;
} location /2.html {
rewrite /2.html /a.html;
} location /3.html {
rewrite /3.html /b.html;
}
}

5.break #本条规则匹配完成即终止,不再匹配后面的任何规则

[root@web01 conf.d]# cat url.cheng.com.conf
server {
listen 80;
server_name url.cheng.com;
root /code; location / {
rewrite /1.html /2.html break;
rewrite /2.html /3.html;
} location /2.html {
rewrite /2.html /a.html;
} location /3.html {
rewrite /3.html /b.html;
}
}

当rewrite规则遇到break后,本location{}与其他location{}的所有rewrite/return规则都不再执行。

当rewrite规则遇到last后,本location{}里后续rewrite/return规则不执行,但重写后的url再次从头开始执行所有规则,哪个匹配执行哪个。

6.需求: 公司网站在停机维护时,指定的IP能够正常访问,其他的IP跳转到维护页。10.0.0.1 10.0.0.100

方法一:

[root@web01 conf.d]# cat sl.cheng.com.conf
server {
listen 80;
server_name sl.cheng.com;
root /data; if ($remote_addr !~* "10.0.0.4|10.0.0.55") {
rewrite ^(.*)/$ /wh.png break;
} location / {
index index.html;
}
}

方法二:

[root@web01 conf.d]# cat sl.cheng.com.conf
server {
listen 80;
server_name sl.cheng.com;
root /data; set $ip 0;
if ($remote_addr !~* "10.0.0.4|10.0.0.55") {
set $ip 1;
}
if ($ip = "0") {
rewrite ^(.*)/$ /wh.png break;
} location / {
index index.html;
}
}

7.需求:公司网站后台/admin,只允许公司的出口公网IP可以访问,其他的IP访问全部返回500,或直接跳转至首页。

方法一:

[root@web01 conf.d]# cat sl.cheng.com.conf
server {
listen 80;
server_name sl.cheng.com;
root /data; location /admin {
index index.html;
} if ($remote_addr !~* "10.0.0.4|10.0.0.55") {
return 500 ;
}
}

方法二:

[root@web01 conf.d]# cat sl.cheng.com.conf
server {
listen 80;
server_name sl.cheng.com;
root /data/admin; if ($remote_addr !~* "10.0.0.4|10.0.0.55") {
rewrite ^(.*)/$ https://www.xuliangwei.com;
} location / {
index index.html;
}
}

方法三:

[root@web01 conf.d]# cat sl.cheng.com.conf
server {
listen 80;
server_name sl.cheng.com;
root /data/; if ($remote_addr !~* "10.0.0.4|10.0.0.55") {
return 500;
} location /admin {
index index.html;
}
}

8.模拟不使用Https的劫持和篡改

[root@lb01 conf.d]# cat proxy_a.cheng.com.conf
server {
listen 80;
server_name a.cheng.com; location / {
proxy_pass http://10.0.0.7;
sub_filter 'hello PC...' '123456';
include proxy_params;
}
} PS:将hello pc 替换为123456

9.HTTPS证书购买指南 cheng.com

保护1个域名 www								docs.cheng.com
保护5个域名 www images cdn test m docs.cheng.com www.cheng.com iamges.cheng.com
通配符域名 *.cheng.com
1套证书
保护所有的域名

10.HTTPS注意事项

Https不支持续费,证书到期需重新申请新并进行替换。

Https不支持三级域名解析,如 test.m.oldboy.com。

Https显示绿色,说明整个网站的url都是https的,并且都是安全的。

Https显示黄色,说明网站代码中有部分URL地址是http不安全协议的。

Https显示红色,要么证书是假的,要么证书已经过期。

11.实现单台Https

0.创建存放ssl证书的路径
[root@Nginx ~]# mkdir -p /etc/nginx/ssl_key
[root@Nginx ~]# cd /etc/nginx/ssl_key 1.生成证书 (密码1234)
[root@Nginx ~]# openssl genrsa -idea -out server.key 2048 2.生成自签证书,同时去掉私钥的密码
openssl req -days 36500 -x509 \
-sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt 3.配置nginx
[root@web01 conf.d]# cat s.cheng.com.conf
server {
listen 443 ssl;
server_name s.cheng.com;
charset utf-8;
root /code;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key; location / {
index index.html;
} } server {
listen 80;
server_name s.cheng.com;
return 302 https://$http_host$request_uri;
} >>思路:
1.先配置好后端的web节点
2.在负载均衡上申请证书(如果之前申请过也可以推送) <----
3.配置nginx负载均衡--->http协议
4.配置域名劫持
5.配置nginx负载均衡--->转为https协议 [root@lb01 conf.d]# cat proxy_s.oldxu.com.conf
upstream webs {
server 172.16.1.7:80;
server 172.16.1.8:80;
} server {
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key; server_name s.oldxu.com;
location / {
proxy_pass http://webs;
include proxy_params;
}
} server {
listen 80;
server_name s.oldxu.com;
return 302 https://$http_host$request_uri;
}

12.Wordpress网站加HTTPS

[root@lb01 conf.d]# cat proxy_word.cheng.com.conf
upstream word {
server 172.16.1.7;
} server {
listen 443 ssl;
server_name word.cheng.com; ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key; location / {
proxy_pass http://word;
include proxy_params;
}
} server {
listen 80;
server_name word.cheng.com;
return 302 https://$http_host$request_uri;
}
[root@web01 conf.d]# cat word.cheng.com.conf
server {
listen 80;
server_name word.cheng.com;
root /code/wordpress; location / {
index index.php;
} location ~ \.php$ {
fastcgi_param HTTPS on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

13.阿里云申请免费的证书------->真实

s.chengyinwu.com

14.SLB+ECS配置Https

1.四层配置:TCP---->6666---->添加ECS---->端口22
2.xshell连接负载公网ip 6666
安装nginx
[root@lb01 conf.d]# cat sui.cheng.com.conf
server {
listen 8080;
server_name sui.cheng.com;
root /code0; location / {
index index.html;
}
} server {
listen 8081;
server_name sui.cheng.com;
root /code1; location / {
index index.html;
}
}
[root@lb01 ~]# mkdir /code0
[root@lb01 ~]# mkdir /code1
[root@lb01 ~]# echo "web01..." > /code0/index.html
[root@lb01 ~]# echo "web02..." > /code1/index.html
在nginx主配置文件删除80端口
监听配置向导----->http --80---->新建虚拟服务器组web--添加两台ECS,端口8080--8081---->检查域名---七层配置完毕
云解析--添加记录--解析至公网ip
通过浏览器访问真实域名
监听配置--->HTTPS-->443--选择证书(部署到负载均衡)--->选择web服务器组--->检查域名---七层配置完毕
监听---->删除80端口
监听配置---->http--->80--->监听转发---》HTTPS:443
通过HTTPS访问---显示web01 02实现轮询

15.需求: 部分URL走https,部分不走https

s.cheng.com/login ---> https

[root@lb01 conf.d]# cat proxy_s.cheng.com.conf
upstream webs {
server 172.16.1.7:80;
server 172.16.1.8:80;
} server {
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key; server_name s.cheng.com;
location / {
proxy_pass http://webs;
include proxy_params;
}
} server {
listen 80;
server_name s.cheng.com; if ($request_uri ~* "^/login") {
return 302 https://$http_host$request_uri;
} location / {
proxy_pass http://webs;
include proxy_params;
}
}

16.需求: 当用户请求s.cheng.com/abc时走http,其他的所有都走https

	s.oldxu.com/       ---> https
s.oldxu.com/abc ---> http [root@lb01 conf.d]# cat proxy_s.oldxu.com.conf
upstream webs {
server 172.16.1.7:80;
server 172.16.1.8:80;
} server {
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key; server_name s.oldxu.com;
location / {
proxy_pass http://webs;
include proxy_params;
}
}
server {
listen 80;
server_name s.oldxu.com; if ($request_uri !~* "^/abc") {
return 302 https://$http_host$request_uri;
} location / {
proxy_pass http://webs;
include proxy_params;
}
}

17.https优化相关的参数?

server {
listen 443 ssl;
server_name nginx.bjstack.com; ssl_certificate ssl_key/1524377920931.pem;
ssl_certificate_key ssl_key/1524377920931.key;
ssl_session_cache shared:SSL:10m; #在建立完ssl握手后如果断开连接,在session_timeout时间内再次连接,是不需要在次建立握手,可以复用之前的连接
ssl_session_timeout 1440m; #ssl连接断开后的超时时间
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用的TLS版本协议
ssl_prefer_server_ciphers on; #Nginx决定使用哪些协议与浏览器进行通讯
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #配置加密套间 l ocation / {
root /soft/code;
index index.html index.htm;
}
}
server {
listen 80;
server_name nginx.bjstack.com;
return 302 https://$server_name$request_uri;
}

18.总结

1.https:

2.https,模拟DNS劫持

3.https证书颁发流程

4.配置Https

单台服务器 LNMP架构

多台服务器 nginx+LNMP架构

1.先实现http

2.在来实现https

5.阿里云申请真是的证书 --->捆绑对应的域名

6.配置SLB+ECS集群--->http方式

7.配置SLB+ECS集群--->https方式

8.将http的所有请求--->https上

9.SLB如何支持多个域名

10.https在使用上一些场景,或者说一些个需求:

1.指定某些url走https,其他都是http协议?

2.所有资源都走https,某一个或某两个url不走https?

11.https配置上优化相关一些个参数? session_cache session_timeout

16.Nginx HTTPS实践的更多相关文章

  1. 17、Nginx HTTPS 实践

    1.HTTPS安全证书基本概述 为什么需要使用HTTPS, 因为HTTP不安全.当我们使用http网站时,会遭到劫持和篡改,如果采用https协议,那么数据在传输过程中是加密的,所以黑客无法窃取或者篡 ...

  2. Https实践

    https实践 常用端口 ssh 22 telnet 23 ftp 21 rsync 873 http 80 mysql 3306 redis 6379 https 443 dns 53 php 90 ...

  3. linux:Nginx+https双向验证(数字安全证书)

    本文由邓亚运提供 Nginx+https双向验证 说明: 要想实现nginx的https,nginx必须启用http_ssl模块:在编译时加上--with-http_ssl_module参数就ok.另 ...

  4. 【百度】大型网站的HTTPS实践(二)——HTTPS加密算法介绍

    大型网站的HTTPS实践(二)——HTTPS加密算法介绍 原创 网络通信/物联网 作者:AIOps智能运维 时间:2018-11-09 15:09:43  358  0 前言 在上一篇文章中,我们简要 ...

  5. Nginx httpS server配置

    Nginx httpS 配置 配置同时支持http和httpS协议: server { listen ; #backlog:每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包 ...

  6. 使用Docker快速部署ELK分析Nginx日志实践(二)

    Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...

  7. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

  8. 为苹果ATS和微信小程序搭建 Nginx + HTTPS 服务

    昨天测试开发微信小程序,才发现微信也要求用HTTPS加密数据,想来是由于之前苹果的ATS审核政策的缘故吧,微信想在苹果上开放小程序必然也只能要求开发者必须使用HTTPS了,于是在服务器上测试安装Ngi ...

  9. 在阿里云 ECS 搭建 nginx https nodejs 环境(三、nodejs)

    在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 第一步 指定版本源 执行 ...

随机推荐

  1. C++解决最基本的迷宫问题

    问题描述:给定一个最基本的迷宫图,用一个数组表示,值0表示有路,1表示有障碍物,找一条,从矩阵的左上角,到右下角的最短路.求最短路,大家最先想到的可能是用BFS求,本文也是BFS求最短路的. 源代码如 ...

  2. HTML-css样式引用方式

    1.使用行内样式表 语法:在标签内部写入一个style属性. 优点:没有样式表文件,在某些时候可以提高效率: 优先级高. 缺点:多个页面难以共享样式,不利于代码复用: HTML和CSS代码混杂,不利于 ...

  3. RestClient火狐接口测试

    一.RestClient的简单介绍 RESTClient是一款用于测试各种Web服务的插件,它可以向服务器发送各种HTTP请求(用户也可以自定义请求方式),并显示服务器响应.二.RESTClient的 ...

  4. kafka报错:Invalid message size: 0

    现象 1.kafka topic 部分分区积压 2.问题kafka 节点上一直报错:java.lang.IllegalStateException: Invalid message size: 0 [ ...

  5. mybatis 插件的原理-责任链和动态代理的体现

    目录 1 拦截哪些方法 2 如何代理 3 代理对象 4 责任链设计模式 @ 如果没有自定义过拦截器, 可以看我前面的文章.如果不知道 JDK 动态代理怎么使用的, 可以看我这文章. 责任链设计模式理解 ...

  6. selenium--定位--CSS

    大家在使用selenium元素定位的时候,通常更多使用的是XPATH,css定位方式用得比较少 但有时候css定位方式还是有一些优势的, 优势1:一般情况下定位速度要比XPATH快 优势2:语法要比X ...

  7. mybatis 配置之<typeAliases>别名配置元素设置

    一.方式一:使用typeAlias <typeAliases> <typeAlias alias="User" type="com.**.entity. ...

  8. 利用Code::Blocks搭建64位C++开发平台

    0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包( ...

  9. python使用代理ip

    python使用代理的方法有两种 1. #先创建代理ip对象 proxy_support = urllib.request.ProxyHandler({'https':'117.64.149.137: ...

  10. httpd2.4

    更换网站主页目录 1.在httpd.conf文件中更改documentroot为新的路径,并为其相应的路径给与相应的权限. Documentroot "/www/http" < ...