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. Java连载34-对象的内存分析、对象之间建立关系

    一.内存分析 代码:引用可以是局部变量也可以是成员变量 public class Test1{ public static void main(String[] args){ User u = new ...

  2. Qt 做一个类似微信滑动聊天界面的demo

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://www.cnblogs.com/lihuidashen/p/115889 ...

  3. SpringCloud之Turbine

    [前面的话]书接上文,本文的某些知识依赖我的上一篇SpringCLoud的文章:SpringCloud之Feign,如果没有看过可以先移步去看一下.前文提到了hystrix的应用,以及hystrix的 ...

  4. Java线程池基础

    目录: 一.线程池概述 二.线程池参数 三.线程池的执行过程 四.线程池的主要实现 五.线程池的使用 六.线程池的正确关闭方式 七.线程池参数调优 一.线程池概述 1.线程池类 目前线程池类一般有两个 ...

  5. WordPress 文章插入的超链接访问不了

    这两天学习WordPress的时候,想着插入超链接直接访问地址,但是没成功.比如添加一个百度的超链接点击之后,就会变成 https://网站域名/go/?url=http://www.baidu.co ...

  6. C语言入门-数据类型

    一.C语言的类型 整数:char.short.int.long.longlong 浮点型:float.double.long double 逻辑:bool 指针 自定义类型 类型有何不同 类型名称:i ...

  7. MyEclipse中的web项目之前有个感叹号

    java web项目有感叹号说明导入的jar包存在问题 或者环境配置不正确 解决办法是点击项目-->Build path -->configure Build Path 然后来到Libra ...

  8. 4.7 if else-if

    c#中的if else-if if else-if  中最后的"else":如果用户输入的不等于上面的else if(xxx)表达式,则输出这行代码. **不参与运算的数值不用转换 ...

  9. angular6 iframe应用

    问题一. iframe如何自适应屏幕高度 解决思路:通过设置iframe外层父元素高度等于window高度,再相对于父元素定位iframe元素:案例如下: 第一步: 模板文件中使用iframe // ...

  10. Oracle 存储过程判断语句正确写法和时间查询方法

    判断语句:if 条件 then   if  条件  then ************;   elsif  条件  then  ************;   elsif 条件  then ***** ...