Nginx的https功能和防盗链

目录

一.HTTPS功能简介

二.https自签名证书

三.防盗链


一.HTTPS功能简介

Web网站的登录页面都是使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。

nginx 的https 功能基于模块ngx_http_ssl_module实现,因此如果是编译安装的nginx要使用参数ngx_http_ssl_module开启ssl功能,但是作为nginx的核心功能,yum安装的nginx默认就是开启的,编译安装的nginx需要指定编译参数--with-http_ssl_module开启

在Nginx中,HTTPS是通过SSL/TLS协议来实现加密和安全通信的功能。以下是Nginx中使用HTTPS的简要介绍:

  1. SSL/TLS支持:Nginx内置了对SSL/TLS协议的支持,可以用来加密客户端和服务器之间的通信,确保数据传输的隐私和安全。

  2. 证书配置:为了启用HTTPS,你需要配置SSL证书,包括公钥、私钥以及可能的中间证书。Nginx需要这些证书来进行加密通信。

  3. 监听HTTPS端口:与HTTP服务不同,HTTPS服务默认运行在443端口上。你需要配置Nginx监听443端口,并将HTTPS流量引导到相应的站点或应用程序。

  4. SSL配置:Nginx提供了一系列的SSL配置选项,用于控制加密算法、协议版本、会话缓存等参数。这些配置可以影响服务器与客户端之间的加密通信方式。

  5. HTTP到HTTPS的重定向:通常情况下,你可能希望将所有的HTTP请求重定向到HTTPS,以确保访问安全。Nginx可以通过配置来实现这种重定向。

  6. 性能优化:Nginx提供了一些优化选项,比如SSL会话缓存、OCSP Stapling等,用于提高HTTPS通信的性能和安全性。

总的来说,Nginx通过其灵活的配置和强大的性能,在实现HTTPS功能时提供了丰富的选项和功能。使用Nginx作为HTTPS服务器可以帮助你实现安全的加密通信,并保护网站和应用程序的数据安全。

https参数

ssl on | off;   
#为指定的虚拟主机配置是否启用ssl功能,此功能在1.15.0废弃,使用listen [ssl]替代
listen 443 ssl;

ssl_certificate /path/to/file;
#指向包含当前虚拟主机和CA的两个证书信息的文件,一般是crt文件

ssl_certificate_key /path/to/file;
#当前虚拟主机使用的私钥文件,一般是key文件

ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]; 
#支持ssl协议版本,早期为ssl现在是TLS,默认为后三个

ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
#配置ssl缓存
 off: #关闭缓存
 none:  #通知客户端支持ssl session cache,但实际不支持
 builtin[:size]:#使用OpenSSL内建缓存,为每worker进程私有
 [shared:name:size]:#在各worker之间使用一个共享的缓存,需要定义一个缓存名称和缓存空间大小,一兆可以存储4000个会话信息,多个虚拟主机可以使用相同的缓存名称

ssl_session_timeout time;
#客户端连接可以复用ssl session cache中缓存的有效时长,默认5m

二.https自签名证书

1.修改配置文件

[root@localhost ~]# cd /etc/pki/tls/
[root@localhost tls]# ls
cert.pem  certs  misc  openssl.cnf  private
[root@localhost tls]# cd  certs/
[root@localhost certs]# pwd
/etc/pki/tls/certs
[root@localhost certs]# ls
ca-bundle.crt  ca-bundle.trust.crt  make-dummy-cert  Makefile  renew-dummy-cert
[root@localhost certs]# vim Makefile 
#找到第57行/usr/bin/openssl genrsa -aes128 $(KEYLEN) > $@
将这一行复制粘贴到下一行,复制的内容删除掉  -aes128  密码
将57行注释掉

2.使用make编译生成证书

3.将秘钥和证书复制到/opt下

[root@localhost certs]# cp  www.* /opt/
[root@localhost certs]# cd /opt
[root@localhost opt]# ls
nginx-1.18.0  nginx-1.18.0.tar.gz  rh  www.zxy.com.crt  www.zxy.com.key

4.编辑子配置文件

5.重新启动nginx

真机访问https://192.168.240.12

三.防盗链

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链,referer就是之前的那个网站域名

none:#请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站,就没有referer信息
blocked:#请求报文有referer首部,但无有效值,比如为空 
server_names:#referer首部中包含本主机名及即nginx 监听的server_name
arbitrary_string:#自定义指定字符串,但可使用*作通配符。
示例: *.kgc.org www.kgc.*  www.baidu.com
egular expression:#被指定的正则表达式模式匹配到的字符串,要使用~开头
例如:~.*\.kgc\.com

实现防盗链:

1.客户机切换到主站点下,编辑配置文件并重启nginx服务

yum安装主站点地址:cd  /usr/share/nginx/html

[root@localhost ~]# cd /usr/share/nginx/html/
[root@localhost html]# ls
404.html  50x.html  en-US  icons  img  index.html  nginx-logo.png  pc.conf  poweredby.png
[root@localhost html]# vim  index.html

<html>
<body>
<h1>this is zhumulangmafeng  </h1>
<img src="http://www.zmlmf.com/b.jpg"/>
</body>
</html>
[root@localhost html]# systemctl restart nginx

2.服务器上切换到子配置文件目录,编辑子配置文件,并重启nginx服务

[root@localhost conf.d]# cd /apps/nginx/conf.d/
[root@localhost conf.d]# 
[root@localhost conf.d]# cd /apps/nginx/conf.d/
[root@localhost conf.d]# vim zmlmf.conf

server  {
  listen  80;
  server_name  www.zmlmf.com;
  root  /data/nginx/zmlmf;
}

3.切换到子配置文件中的站点,拖入图片并改名为b.jpg

[root@localhost conf.d]# cd /data/nginx/zmlmf
[root@localhost zmlmf]# ls
b.jpg  

4.验证真机是否能够通过客户机查看到图片b.jpg

访问192.168.240.11

5.设置防盗链

server  {
  listen  80;
  server_name  www.zmlmf.com;
  root  /data/nginx/zmlmf;
  location  ~* \.(jpg|gif|swf|jpeg|bmp)$ {
  valid_referers  none  blocked  *.zmlmf.com  zmlmf.com;
  if ( $invalid_referer ) {
  #rewrite  ^/ http://192.168.240.12/error.png;
  return   403;
}
}
}

6.重启nginx服务后,真机再次访问192.16.240.11,出现403报错

7.给防盗链添加访问失败图片

开启子配置文件中  #rewrite  ^/ http://192.168.240.12/error.png;

关闭  #return  403

在服务器主站点拖入图片并改名为error.png

重新启动nginx服务

8.真机访问192.168.240.11

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/692964.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣hot100:739. 每日温度/54. 螺旋矩阵

文章目录 一、 739. 每日温度二、54. 螺旋矩阵1、模拟螺旋矩阵的路径2、按层模拟 一、 739. 每日温度 LeetCode&#xff1a;739. 每日温度 经典单调栈问题&#xff0c;求下一个更大的数。 使用单调递减栈&#xff0c;一个元素A出栈&#xff0c;当且仅当它第一次出现比它更大…

Linux常见故障处理之df命令卡住不输出

一、背景说明 朋友咨询Linux系统下输入df -h命令后没有任何输出结果&#xff0c;博主的第一反应是/根分区磁盘空间满了&#xff0c;朋友说cd等其他命令可以执行。博主又猜测可能是有人误定义了命令别名&#xff0c;进一步确认命令卡住在等待输出页面。事后博主想起来可能是共享…

【Docker系列】跨平台 Docker 镜像构建:深入理解`--platform`参数

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【计网复习】应用层总结(不含HTTP和错题重点解析)

应用层总结&#xff08;不含HTTP和错题重点解析&#xff09; 应用层简介 应用层的主要功能常见的应用层协议小林对于应用层通常的解释 网络应用模型 客户端-服务器模型&#xff08;Client-Server Model, C/S&#xff09; 特点优点缺点应用场景 对等网络模型&#xff08;Peer-to…

中文文案写作有哪些合适的AIGC工具?

这是计育韬老师第 8 次开展面向全国高校的新媒体技术公益巡讲活动了。而在每场讲座尾声&#xff0c;互动答疑环节往往反映了高校师生当前最普遍的运营困境&#xff0c;特此计老师在现场即兴答疑之外&#xff0c;会尽量选择有较高价值的提问进行文字答疑梳理。 *本轮巡讲主题除了…

8.数砖数

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/879 题目描述 给定一种 2222 规格的瓷砖,…

标准发布实施 | 《村镇污水处理一体化集成装备技术规范》

根据《中华人民共和国标准化法》以及国家标准化管理委员会、民政部联合制定的《团体标准管理规定》&#xff0c;依据全国团体标准信息平台和《中华环保联合会团体标准管理办法&#xff08;试行&#xff09;》&#xff0c;全国团体标准《村镇污水处理一体化集成装备技术指南》&a…

Scanpy(3)单细胞数据分析常规流程

单细胞数据分析常规流程 面对高效快速的要求上,使用R分析数据越来越困难,转战Python分析,我们通过scanpy官网去学习如何分析单细胞下游常规分析。 数据3k PBMC来自健康的志愿者,可从10x Genomics免费获得。在linux系统上,可以取消注释并运行以下操作来下载和解压缩数据。…

【下篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。上回我解释了YoloX, 今天从Yolov6开始。 YOLOv6:面向工业应用的单级物体检测框架 美团视觉人工智能事业部(Meituan Vision AI Department)于 2022 年 9 月在…

公众号首图次图封面设计工具

制作图 介绍 《制作图》是一款用来设计封面的工具&#xff0c;比如你可以为你的博客、视频、公众号等设计你自己喜欢的封面。 预览 网址 https://wuxianqiang.github.io/fabritor/ 公众号首图、次图&#xff0c;按尺寸标准一键生成 该工具为公众号等自媒体创作者的提效神…

Photoshop版本选择及系统要求

1、ps2018cc/2020cc版本 适合新手&#xff0c;增加了很多智能化操作&#xff0c;非常方便好上手。 2020&#xff1a; 2、ps2015版本 cc2015版本不论是功能还是硬件上&#xff0c;都是不二选择&#xff0c;适合于配置较低的电脑&#xff0c;该有的基本功能它都有。 3、2021/2…

【Centos】深度解析:CentOS下安装pip的完整指南

【Centos】深度解析&#xff1a;CentOS下安装pip的完整指南 大家好 我是寸铁&#x1f44a; 总结了一篇【Centos】深度解析&#xff1a;CentOS下安装pip的完整指南✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 方式1(推荐) 下载get-pip.py到本地 sudo wget https://bootstrap.p…

代码随想录——修建二叉搜素树(Leetcode669)

题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

HTTP 协议详解(史上最全)

目录 1. HTTP 协议介绍 2. HTTP 协议的工作过程 3. Fiddler 抓包工具介绍 3.1 抓包工具的使用 3.2 抓包结果 3.3 抓包工具原理 4. HTTP 协议格式总览 5. HTTP 请求&#xff08;Request&#xff09; 5.1 认识 URL URL 基本介绍 URL 基本格式 URL 参数介绍 URLencod…

【Java 百“练”成钢】Java 基础:带参数的方法

Java 基础&#xff1a;带参数的方法 01.求和02.字符串输出03.寻找最大值04.寻找最小值05.字符串拼接06.求平均值07.数组排序08.累乘09.存在的字符串10.长整型求和11.寻找字符串索引12.字符串拼接&#xff08;StringBuilder&#xff09; 01.求和 public class SumCalculator {s…

C#操作MySQL从入门到精通(15)——分组数据

前言 我们有时候需要对数据库中查询的数据进行分组,所谓分组就是将相同的数据分为一组,本次测试使用的数据库数据如下: 1、分组 分组使用group by关键词,下面的代码的意思是对查询的结果按照student_age进行分组,student_age相同的划分为同一组 string sql = string.E…

《软件定义安全》之四:什么是软件定义安全

第4章 什么是软件定义安全 1.软件定义安全的含义 1.1 软件定义安全的提出 虚拟化、云计算、软件定义架构的出现&#xff0c;对安全体系提出了新的挑战。如果要跟上网络演进的步伐和业务快速创新的速度&#xff0c;安全体系应该朝以下方向演变。 &#x1d7ed; 安全机制软件…

【C++关键字】auto的使用(C++11)

auto的使用&#xff08;C11&#xff09; auto关键字auto的使用细则auto使用场景 随着程序的复杂化&#xff0c;程序中用到的类型也越来越复杂化&#xff0c;经常体现在&#xff1a; 1.类型难以拼写 2.含义不明确导致容易出错 在C语言阶段处理这类问题的方法&#xff0c;可以使…

【Python机器学习】NMF——模拟数据

与使用PCA不同&#xff0c;我们需要保证数据是正的&#xff0c;NMF能够对数据进行操作。这说明数据相对于原点(0,0)的位置实际上对NMF很重要。因此&#xff0c;可以将提取出来的非负向量看作是从(0,0)到数据的方向。 举例&#xff1a;NMF在二维玩具数据上的结果&#xff1a; …

【Git】远程操作 -- 详解

一、理解分布式版本控制系统 我们目前所说的所有内容&#xff08;工作区、暂存区、版本库等等&#xff09;都是在本地&#xff0c;也就是在我们的笔记本或者计算机上。而我们的 Git 其实是分布式版本控制系统。 上面这段话是什么意思呢&#xff1f; 可以简单理解为&#xff1…