(七)企业级高性能 WEB 服务 - HTTPS 加密
在当今互联网时代,数据安全成为了每个企业和开发者必须关注的重点。尤其是对于Web服务来说,如何保障用户数据的安全传输是至关重要的。本文将深入探讨HTTPS加密的原理、Nginx的HTTPS配置,以及如何通过Nginx实现高性能的Web服务。
1. HTTPS加密:保障数据传输的安全
HTTPS(Hyper Text Transfer Protocol Secure)是HTTP的安全版本,通过在HTTP上加入SSL/TLS协议,实现了数据的加密传输。HTTPS的核心在于SSL/TLS协议,它能够确保客户端和服务器之间的通信是加密的,防止敏感信息被第三方窃取。
HTTPS的工作原理:
- 客户端发起HTTPS请求:客户端访问Web端的HTTPS地址,通常是443端口。
- 服务端配置证书:服务器必须配置一套SSL证书,证书包含公钥和私钥。
- 传送证书:服务器将公钥传递给客户端。
- 客户端解析证书:客户端验证证书的有效性,并生成一个随机值,用公钥加密后发送给服务器。
- 服务端解密信息:服务器用私钥解密客户端发送的随机值,后续通信通过该随机值进行对称加密。
通过这一系列步骤,HTTPS确保了数据传输的安全性,广泛应用于银行、电子邮箱等对安全性要求较高的场景。
2. Nginx的HTTPS配置
Nginx作为一款高性能的Web服务器,支持通过ngx_http_ssl_module模块实现HTTPS功能。以下是Nginx中常用的HTTPS配置参数:
- ssl on | off:启用或禁用SSL功能。
- listen 443 ssl http2:监听443端口,并启用HTTP/2协议。
- ssl_certificate:指定SSL证书路径。
- ssl_certificate_key:指定SSL私钥路径。
- ssl_protocols:指定支持的SSL/TLS协议版本。
- ssl_session_cache:配置SSL会话缓存,提升性能。
- ssl_session_timeout:设置SSL会话的超时时间。
示例配置:
server {listen 443 ssl http2;server_name www.example.com;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/cert.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;root /var/www/html;
}
3. 自签名SSL证书的生成与使用
在某些情况下,我们可能需要使用自签名的SSL证书,尤其是在开发和测试环境中。通过OpenSSL工具,我们可以轻松生成自签名证书。
生成自签名证书的步骤:
-
生成CA证书:
openssl req -newkey rsa:4096 -nodes -keyout ca.key -x509 -days 3650 -out ca.crt -
生成服务器证书:
openssl req -newkey rsa:4096 -nodes -keyout server.key -out server.csr openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -
合并证书:
cat server.crt ca.crt > server.pem -
配置Nginx使用自签名证书:
server {listen 443 ssl;server_name www.example.com;ssl_certificate /path/to/server.pem;ssl_certificate_key /path/to/server.key;root /var/www/html; }
需要注意的是,自签名证书不会被浏览器默认信任,用户访问时会收到安全警告。可以通过将CA证书导入系统或浏览器的受信任根证书颁发机构来解决这个问题。
4. 实现HTTP自动跳转HTTPS
为了确保用户始终通过HTTPS访问网站,我们可以配置Nginx,将HTTP请求自动重定向到HTTPS。
方法一:基于302临时重定向
server {listen 80;server_name www.example.com;return 302 https://$server_name$request_uri;
}server {listen 443 ssl;server_name www.example.com;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/cert.key;root /var/www/html;
}
方法二:基于301永久重定向
server {listen 80;server_name www.example.com;return 301 https://$server_name$request_uri;
}server {listen 443 ssl;server_name www.example.com;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/cert.key;root /var/www/html;
}
301重定向会将跳转的链接缓存至本地浏览器,提升后续访问的速度。
5. Nginx的Rewrite模块:实现URL重写与重定向
Nginx的ngx_http_rewrite_module模块允许我们通过正则表达式对URL进行重写和重定向。常见的应用场景包括:
- URL重写:将旧的URL结构重写为新的URL结构。
- 重定向:将用户请求重定向到新的URL。
示例:将旧URL重定向到新URL
server {listen 80;server_name www.example.com;location /old {rewrite ^/old/(.*)$ /new/$1 permanent;}
}
示例:根据用户设备类型重定向
server {listen 80;server_name www.example.com;if ($http_user_agent ~* "android|iphone|ipad") {rewrite ^/(.*)$ http://m.example.com/$1 redirect;}
}
6. Nginx防盗链配置
为了防止其他网站盗用本站的资源(如图片、视频等),我们可以通过Nginx的ngx_http_referer_module模块实现防盗链功能。
防盗链配置示例:
server {listen 80;server_name www.example.com;location /images {valid_referers none blocked server_names *.example.com ~\.google\. ~\.baidu\.;if ($invalid_referer) {return 403 "Forbidden Access";}}
}
通过配置valid_referers,我们可以指定允许访问资源的来源域名,防止未经授权的盗链行为。
7. 总结
通过HTTPS加密、Nginx的SSL配置、URL重写与重定向、以及防盗链等功能,我们可以构建一个高性能、安全可靠的企业级Web服务。无论是保障数据传输的安全性,还是提升用户体验,Nginx都提供了强大的工具和灵活的配置选项。
希望本文的内容能够帮助你更好地理解和应用Nginx,打造更加安全、高效的Web服务。如果你有任何问题或建议,欢迎在评论区留言讨论!
相关文章:
(七)企业级高性能 WEB 服务 - HTTPS 加密
在当今互联网时代,数据安全成为了每个企业和开发者必须关注的重点。尤其是对于Web服务来说,如何保障用户数据的安全传输是至关重要的。本文将深入探讨HTTPS加密的原理、Nginx的HTTPS配置,以及如何通过Nginx实现高性能的Web服务。 1. HTTPS加密…...
[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)
标题:[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2) 水墨不写bug 文章目录 一、无法拷贝类(class uncopyable)的设计解释:重要思想:使用示例 二、锁的RAII设计解释重要考虑使用示例 三、基于RAII模式和互斥锁的的日志…...
MySQL(单表)知识点
文章目录 1.数据库的概念2.下载并配置MySQL2.1初始化MySQL的数据2.2注册MYSQL服务2.3启动MYSQL服务2.4修改账户默认密码2.5登录MYSQL2.6卸载MYSQL 3.MYSQL数据模型3.1连接数据库 4.SQL简介4.1SQL的通用语法4.2SQL语句的分类4.3DDL语句4.3.1数据库4.3.2表(创建,查询,修改,删除)4…...
HarmonyOS Next 属性动画和转场动画
HarmonyOS Next 属性动画和转场动画 在鸿蒙应用开发中,动画是提升用户体验的关键要素。通过巧妙运用动画,我们能让应用界面更加生动、交互更加流畅,从而吸引用户的注意力并增强其使用粘性。鸿蒙系统为开发者提供了丰富且强大的动画开发能力&…...
使用Node.js从零搭建DeepSeek本地部署(Express框架、Ollama)
目录 1.安装Node.js和npm2.初始化项目3.安装Ollama4.下载DeepSeek模型5.创建Node.js服务器6.运行服务器7.Web UI对话-Chrome插件-Page Assist 1.安装Node.js和npm 首先确保我们机器上已经安装了Node.js和npm。如果未安装,可以通过以下链接下载并安装适合我们操作系…...
Docker 部署 MongoDB 并持久化数据
Docker 部署 MongoDB 并持久化数据 在现代开发中,MongoDB 作为 NoSQL 数据库广泛应用,而 Docker 则提供了高效的容器化方案。本教程将介绍如何使用 Docker 快速部署 MongoDB,并实现数据持久化,确保数据不会因容器重启或删除而丢失…...
DeepSeek + 沉浸式翻译 打造智能翻译助手
本文详细介绍如何使用 DeepSeek API 沉浸式翻译插件打造个性化翻译助手。 一、DeepSeek API 配置 基础配置 API 基础地址:https://api.deepseek.com需要申请 API Key支持与 OpenAI SDK 兼容的调用方式 可用模型 deepseek-chat:已升级为 DeepSeek-V3&am…...
cdn取消接口缓存
添加cdn后,使用cdn加速域名访问接口 是缓存,不是最新的数据,如果使用局域网则是最新的数据,如果修改配置,确保使用cdn域名请求的接口返回不是缓存 要确保通过CDN加速域名访问接口时返回的是最新的数据,而不…...
字节跳动C++客户端开发实习生内推-抖音基础技术
智能手机爱好者和使用者,追求良好的用户体验; 具有良好的编程习惯,代码结构清晰,命名规范; 熟练掌握数据结构与算法、计算机网络、操作系统、编译原理等课程; 熟练掌握C/C/OC/Swift一种或多种语言ÿ…...
OpenHarmony子系统开发编译构建指导
OpenHarmony子系统开发编译构建指导 概述 OpenHarmony编译子系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能: 以部件为最小粒度拼装产品和独…...
MySQL进阶-关联查询优化
采用左外连接 下面开始 EXPLAIN 分析 EXPLAIN SELECT SQL_NO_CACHE * FROM type LEFT JOIN book ON type.card book.card; 结论:type 有All ,代表着全表扫描,效率较差 添加索引优化 ALTER TABLE book ADD INDEX Y ( card); #【被驱动表】࿰…...
数据结构第六节:二叉搜索树(BST)的基本操作与实现
【本节要点】 二叉搜索树(BST)基本原理代码实现核心操作实现辅助函数测试代码完整代码 一、二叉搜索树(BST)基本原理与设计总结 注:基本原理的详细分析可以在数据结构第六节中查看,这里是简单描述。 二叉搜…...
在昇腾GPU上部署DeepSeek大模型与OpenWebUI:从零到生产的完整指南
引言 随着国产AI芯片的快速发展,昇腾(Ascend)系列GPU凭借其高性能和兼容性,逐渐成为大模型部署的重要选择。本文将以昇腾300i为例,手把手教你如何部署DeepSeek大模型,并搭配OpenWebUI构建交互式界面。无论…...
在window终端创建docker容器的问题
问题: 错误原因: PowerShell 换行符错误 PowerShell 中换行应使用反引号而非反斜杠 \,错误的换行符导致命令解析中断。 在 Windows 的 PowerShell 中运行 Docker 命令时遇到「sudo 无法识别」的问题,这是因为 Windows 系统原生不…...
掌握Kubernetes Network Policy,构建安全的容器网络
在 Kubernetes 集群中,默认情况下,所有 Pod 之间都是可以相互通信的,这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制,Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则,…...
ReAct论文阅读笔记总结
ReAct:Synergizing Reasoning and Acting in Language Models 背景 最近的研究结果暗示了在自主系统中结合语言推理与交互决策的可能性。 一方面,经过适当Prompt的大型语言模型(LLMs)已经展示了在算术、常识和符号推理任务中通…...
Linux云计算SRE-第十七周
1. 做三个节点的redis集群。 1、编辑redis节点node0(10.0.0.100)、node1(10.0.0.110)、node2(10.0.0.120)的安装脚本 [rootnode0 ~]# vim install_redis.sh#!/bin/bash # 指定脚本解释器为bashREDIS_VERSIONredis-7.2.7 # 定义Redis的版本号PASSWORD123456 # 设置Redis的访问…...
Python在数字货币交易中的算法设计:从策略到实践
Python在数字货币交易中的算法设计:从策略到实践 随着区块链技术的发展和加密货币市场的繁荣,数字货币交易已经成为金融领域的一个重要分支。从个体投资者到量化基金,算法交易(Algorithmic Trading)正在为提高交易效率和决策质量提供强大的支撑。在这些技术应用中,Pytho…...
高纬度、跨极区导航技术
本文是何昆鹏老师所写,在此非常感谢何老师的分享。 全球导航,特别是极区导航,一直被美俄导航领域所关注。美俄本身部分国土就处于极区,很多战略军事部署与全球航线也都处于该区域,加之其战略军事任务也都强调全球覆盖…...
用AI学编程2——python学习1
一个py文件,学会所有python所有语法和特性,给出注释,给出这样的文件 Python 学习整合文件 """ Python 学习整合文件 包含 Python 的基础语法、数据结构、函数定义、面向对象编程、异常处理、文件操作、高级特性等内容 每个部…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
