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. Spring boot 自定义banner的在线制作

    目前工作不是很忙,利用闲暇的时间,在给自己不断地充电,提升自己的技术实力. 目前在做一个基于Spring Boot2.x+webmagic+quartz的爬虫项目[hotDog]https://git ...

  2. 面试官: 聊一聊Babel

    点击关注本公众号获取文档最新更新,并可以领取配套于本指南的 <前端面试手册> 以及最标准的简历模板. 前言 Babel 是现代 JavaScript 语法转换器,几乎在任何现代前端项目中都 ...

  3. 查看mysql中的用户和密码

    use mysql; select host,user,password from user; 设置密码 set password for root@localhost=password('root' ...

  4. [C++] C++中的常用库

    转载自:C++常用库 C++ 资源大全 关于 C++ 框架.库和资源的一些汇总列表,内容包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++标准库,包 ...

  5. java枚举的应用

    最近的项目中,看前辈们用到的枚举比较多,由于自己之前对枚举这种类型不是很了解,遂花费心机看了下,整理记录下. 1.枚举常量 系统中定义的状态字段,用的比较多: public enum orderTyp ...

  6. JAVASE知识点总结(三)

    第十六章:抽象类和接口 一.抽象方法:在方法面前加了abstract(为了解决,子类必须要覆盖此方法,在定义的时候不要方法体). 特点:1.抽象方法没有方法体. 2.抽象方法必须放在抽象类(类前面加上 ...

  7. ubuntu linux 修改ip 超扎心。

    老大说“终于搞定了,快记下来,不然以后又忘了”(露出慈母般的微笑) 参考地址:https://jingyan.baidu.com/article/adc815139ddcc4f723bf7339.ht ...

  8. 数位DP 详解

    序 天堂在左,战士向右 引言 数位DP在竞赛中的出现几率极低,但是如果不会数位DP,一旦考到就只能暴力骗分. 以下是数位DP详解,涉及到的例题有: [HDU2089]不要62 [HDU3652]B-n ...

  9. 一行命令安装docker和docker-compose(CentOS7)

    想快速装好docker和docker-compose ?那就随本文用一次复制粘贴来完成安装: 环境信息 操作系统:CentOS Linux release 7.7.1908 (Core, 操作账号:r ...

  10. Mysql的表级锁和行级锁

    表级锁 MySQL表级锁分为读锁和写锁. 读锁 用法:LOCK TABLE table_name [ AS alias_name ] READ 释放锁使用UNLOCK tables.可以为表使用别名, ...