nginx--压缩https证书favicon.iconginx隐藏版本号 去掉nginxopenSSL

压缩功能

简介

Nginx⽀持对指定类型的⽂件进行压缩然后再传输给客户端,而且压缩还可以设置压缩比例,压缩后的文件大小将比源文件显著变小,这样有助于降低出口带宽的利用率,降低企业的IT支出,不过会占用相应的CPU资源。

Nginx对文件的压缩功能是依赖于模块ngx_http_gzip_module,官方文档:https://nginx.org/en/cdocs/http/ngx_http_gzip_module.html, 配置指令如下:

参数

gzip on | off; 启用或禁用gzip压缩,默认关闭

gzip_comp_level level; 压缩比由低到高从1到9,默认为1

gzip_disable "MSIE [1-6]\."; 禁⽤用IE6 gzip功能

gzip_min_length 1k; gzip压缩的最小文件,小于设置值的文件将不会压缩

gzip_http_version 1.0 | 1.1;  启用压缩功能时,协议的最小版本,默认HTTP/1.1

gzip_buffers number size;  指定Nginx服务需要向服务器申请的缓存空间的个数*大小,默认32 4k|16 8k;

gzip_types mime-type ...; 指明仅对哪些类型的资源执行压缩操作;默认为gzip_types text/html,不用显示指定,否则出错

text/plain
application/javascript
application/x-javascript
text/cssapplication/xml
text/javascript
application/x-httpd-php
image/jped
image/gif
image/png;

gzip_vary on | off;如果启用压缩,是否在响应报文首部插⼊入“Vary: Accept-Encoding”

 测试

     gzip on;
     gzip_comp_level 3;
     gzip_min_length 1k;
     gzip_types text/plain application/javascript application/x-javascript text/cssapplication/xml text/javascript application/x-httpd-php image/jped image/gif image/pn;
     gzip_vary on;

 

https功能

简介

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

 图解

 实现过程

  1. 客户端发起HTTPS请求。当客户端(如浏览器)访问使用HTTPS协议的网站时,它会建立到服务器443端口的连接(HTTPS的默认端口),这通常是443端口。
  2. 服务端返回携带公钥的HTTPS证书。服务器在接收到客户端的请求后,会将其拥有的数字证书(包含公钥)传递给客户端,这个证书是由数字证书颁发机构(CA)签发的,并包含了证书颁发机构信息、公司信息和证书有效期等多种信息。
  3. 客户端验证证书是否合法。客户端在收到服务器的证书后,会对其进行验证,以确保证书的有效性和真实性,这包括检查证书的颁发机构、有效期以及证书中的域名是否与实际域名一致,如果证书不是由可信的CA机构颁发,或者存在其他问题,客户端会向用户显示一个警告。
  4. 客户端生成随机数并加密。如果证书验证成功,客户端会生成一个随机数,并使用服务器的公钥对这个随机数进行加密。
  5. 服务端解密随机数并用其加密响应内容。服务器在收到客户端加密的随机数后,使用其私钥来解密这个随机数,然后服务器使用这个随机数作为对称加密算法的密钥,对返回的数据内容进行加密,并发送给客户端。
  6. 客户端解密数据。客户端在收到服务器加密的数据后,使用之前生成的随机数(对称密钥)来解密数据。
  7. 双方愉快地传输所有数据。现在,双方都可以使用对称加密算法安全地传输数据,因为对称加密算法使用的密钥只有双方知道。

 SSL参数配置

nginx 的https 功能基于模块ngx_http_ssl_module实现,因此如果是编译安装的nginx要使用参数
ngx_http_ssl_module开启ssl功能,但是作为nginx的核心功能,yum安装的nginx默认就是开启的,编译安装的nginx需要指定编译参数--with-http_ssl_module开启,官方文档: https://nginx.org/en/docs/http/ngx_http_ssl_module.html,配置参数如下

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

ssl_certificate /path/to/file; 当前虚拟主机使用的公钥文件,⼀般是crt文件

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

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

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

nginx证书签发

创建证书目录

cd /apps/nginx/
mkdir certs
cd certs

创建证书

openssl参数详解

version    用于查看版本信息

enc        用于加解密

ciphers    列出加密套件

genrsa    用于生成私钥

rsa        RSA密钥管理(例如:从私钥中提取公钥)

rsa:4096 用于生成一个新的4096位的RSA密钥

nodes  参数用于生成不包含私钥的证书

sha256  哈希算法是SHA256

req        生成证书签名请求(CSR)

crl        证书吊销列表(CRL)管理

ca         CA管理(例如对证书进行签名)

dgst      生成信息摘要

rsautl    用于完成RSA签名、验证、加密和解密功能

passwd    生成散列密码

rand      生成伪随机数

speed      用于测试加解密速度                    

s_client  通用的SSL/TLS客户端测试工具

X509       X.509证书管理

verify      X.509证书验证

pkcs7       PKCS#7协议数据管理

 自签名CA证书

[root@localhost certs]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
Generating a 4096 bit RSA private key
.................................................................................................................................................................++
....................................................++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN   国家
State or Province Name (full name) []:Shaanxi   省份 
Locality Name (eg, city) [Default City]:Xianyang  城市名称
Organization Name (eg, company) [Default Company Ltd]:fxq 公司名称
Organizational Unit Name (eg, section) []:fxq  部门
Common Name (eg, your name or your server's hostname) []:fxq.ca  通用名称
Email Address []:   邮箱

 

 自制key和csr文件

 [root@localhost certs]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.fxq.com.key -out www.fxq.com.csr
Generating a 4096 bit RSA private key
..............................................................................................................................................................................................................................................................................................++
...........................................................................................++
writing new private key to 'www.fxq.com.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shaanxi
Locality Name (eg, city) [Default City]:Xianyang
Organization Name (eg, company) [Default Company Ltd]:fxq
Organizational Unit Name (eg, section) []:fxq.com
Common Name (eg, your name or your server's hostname) []:www.fxq.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

 

签发证书

[root@localhost certs]# openssl x509 -req -days 365 -in www.fxq.com.csr -CA  ca.crt -CAkey ca.key -CAcreateserial -out www.fxq.com.crt
Signature ok
subject=/C=CN/ST=Shaanxi/L=Xianyang/O=fxq/OU=fxq.com/CN=www.fxq.com/emailAddress=2825577216@qq.com
Getting CA Private Key

 验证证书内容

 nginx证书配置
 server {
        listen       80;
        listen       443 ssl;
        ssl_certificate  /apps/nginx/certs/www.fxq.com.crt;
        ssl_certificate_key /apps/nginx/certs/www.fxq.com.key;
        ssl_session_cache shared:sslcache:20m;
        ssl_session_timeout 10m;

https多域名复用

制作key和csr文件

[root@localhost certs]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout xxx.fxq.com.key -out xxx.fxq.com.csr
Generating a 4096 bit RSA private key
......................................................................................................++
.....................................................++
writing new private key to 'xxx.fxq.com.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shaanxi
Locality Name (eg, city) [Default City]:Xianyang
Organization Name (eg, company) [Default Company Ltd]:fxq
Organizational Unit Name (eg, section) []:fxq.com
Common Name (eg, your name or your server's hostname) []:XXX.fxq.com
Email Address []:2825577216@qq.com      

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

签名证书

[root@localhost certs]# openssl x509 -req -days 365 -in xxx.fxq.com.csr -CA  ca.crt -CAkey ca.key -CAcreateserial -out xxx.fxq.com.crt
Signature ok
subject=/C=CN/ST=Shaanxi/L=Xianyang/O=fxq/OU=fxq.com/CN=XXX.fxq.com/emailAddress=2825577216@qq.com
Getting CA Private Key

 验证证书内容

 nginx证书配置
[root@localhost certs]# cat /apps/nginx/conf/conf.d/xxx.conf 
server {
   listen 80;
   listen 443;
   
  ssl_certificate  /apps/nginx/certs/xxx.fxq.com.crt;
  ssl_certificate_key /apps/nginx/certs/xxx.fxq.com.key;
  ssl_session_cache shared:sslcache:20m;
  ssl_session_timeout 10m;
  server_name xxx.fxq.com;
   location /zx {
     root /apps/nginx/html/;
     index index.html;
     
} }

关于favicon.ico

favicon.ico 文件是浏览器收藏网址时显示的图标,当客户端用浏览器问页面时,浏览器会⾃自己主动发起请求获取页面的favicon.ico文件,但是当浏览器请求的favicon.ico文件不存在时,服务器会记录404日志,而且浏览器也会显示404报错。

 

 location = /favicon.ico {
     root /data/nginx/html/pc;
  }

 nginx隐藏版本号

http下:

server_tokens off;

 去掉nginx

cd /usr/local/src/nginx-1.24.0/src/http/
vim ngx_http_header_filter_module.c

 重新编译

 nginx -V
 cd /usr/local/src/nginx-1.24.0
 ./configure  后面编译参数与nginx -V看到的保持一致
 make && make install

 升级openSSL

OpenSSL是一个的开放源代码软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。

准备安装包在/usr/local/src/
cd /usr/local/src/
tar -zxvf openssl-1.1.1d.tar.gz 
cd nginx-1.24.0
./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --with-http_perl_module --with-file-aio --add-module=/usr/local/src/echo-nginx-module-master --with-threads --with-openssl=/usr/local/src/openssl-1.1.1d
make && make install

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

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

相关文章

[leetcode]Z 字形变换

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:string convert(string s, int numRows) {int n s.length(), r numRows;if (r 1 || r > n) {return s;}int t r * 2 - 2;int c (n t - 1) / t * (r - 1);vector<string> mat(r, string(c, 0)…

第Y9周:重要模块解读

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 目录 以con.py为例&#xff1a; 一、autopad 二、Conv 三、Focus 四、C2f 文件…

【牛客网】值周

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 差分。 因为l<100000000,所以数组开1e8。 唯一需要注意的点就是前面给b[0]单独赋值为1&#xff08;因为如果在循环中给b[0]赋值&…

Linux PTP学习

前言 本文是对Linux PTP的学习记录&#xff0c;不足之处请指出。Linux PTP用于在Linux系统的精确时钟同步&#xff0c;支持IEEE 1588 Precision Time Protocol&#xff08;PTP&#xff09;标准&#xff0c;目的是实现在网络中&#xff0c;设备之间的高精度时间同步。它是一个工…

SSM整合-前后端分离-项目环境搭建 (上)

整合SSM 项目基础环境搭建项目介绍创建项目项目全局配置web.xmlSpringMVC配置配置Spring和MyBatis, 并完成整合创建表, 使用逆向工程生成Bean, XxxMapper和XxxMapper.xml注意事项和细节说明 实现功能01-搭建Vue前端工程需求分析/图解代码实现搭建Vue前端工程vue3项目目录结构梳…

Pytorch学习笔记——TensorBoard的初使用

1、TensorBoard介绍 TensorBoard是TensorFlow的可视化工具&#xff0c;但它也可以与PyTorch结合使用。TensorBoard提供了一个Web界面&#xff0c;可以展示你训练过程中的各种信息&#xff0c;如损失值、准确度、权重分布等&#xff0c;更好地帮助开发者理解和调试模型。 Tenso…

01 Activiti 7:步骤

01 Activiti 7&#xff1a;步骤 1. 整合Activiti2. 业务流程建模3. 部署业务流程4. 启动流程实例5. 查询待办任务6. 处理待办任务7. 结束流程 1. 整合Activiti 业务系统使用 Activiti 来对系统的业务流程进行自动化管理。为了方便业务系统访问&#xff08;操作&#xff09;Act…

看了这一篇,你不用再为找oracle安装介质发愁了!

写这篇文章的原因是&#xff1a;经常有49年还想要入国军学习Oracle的小伙伴问要不同版本的Oracle软件安装包&#xff08;说明一下&#xff0c;尊重版权&#xff0c;拒绝盗版&#xff0c;还是要从正规渠道获得介质&#xff09; 事实上很多人遇到过样的坑&#xff0c;才发现正规…

YH11047A 三串四串锂电保护板的3串使用问题 8254A电池芯片

网上的示例电路4串正确&#xff0c;但是3串错误 我使用3串接线时&#xff0c;pp-电压只有0.几v。即被保护 根据查询8254A的IC资料 发现3串和4串的电路图有明显区别&#xff1a; 1、3串的sel脚接vss&#xff08;低电势&#xff09;&#xff0c;4串的sel脚接vdd&#xff08;高电…

Python AI 速成课:快速打造高效AI

这个文章主要是对python AI 小白的 。实用性很强&#xff0c;不用太多复杂步骤。 第一步&#xff1a;先到Try NVIDIA NIM APIs这个网站 然后使用邮箱注册&#xff0c;很简单和快捷。 第二步&#xff1a;点击微软的phi-3模型&#xff0c;这个API是免费的 第三步&#xff1a; 获取…

00 Activiti 7:介绍

00 Activiti 7&#xff1a;介绍 1. 前言2. 介绍3. 官网4. 核心机制5. BPMN5.1. 核心要素5.1.1. 流程元素5.1.2. 连接元素5.1.3. 数据和消息5.1.4. 协作 1. 前言 工作流&#xff08;Workflow&#xff09;是一种管理和自动化业务过程的方法&#xff0c;它将一系列任务或活动按照…

117篇 | 3D Gaussian Splatting论文

本论文集划分为4个部分&#xff1a;综述&基础&#xff08;14篇&#xff09;、NeRF在AIGC&#xff08;54篇&#xff09;、NeRF在SLAM&#xff08;自动驾驶&#xff09;&#xff08;25篇&#xff09;、NeRF之场景建模&#xff08;25篇&#xff09; https://t.zsxq.com/3ATyE…

大气官网(1):家居家电,海量案例来袭。

设计一款大气的家居家电官网&#xff0c;可以考虑以下几个方面&#xff1a; 色彩选择&#xff1a;选择适合家居家电风格的色彩搭配。可以选择温暖的中性色调&#xff0c;如米白色、灰色和棕色&#xff0c;以增加页面的大气感和舒适感。图片展示&#xff1a;使用高质量的图片展…

京东JD商品SKU信息API返回值解析:精准掌握商品属性

在电子商务迅猛发展的今天&#xff0c;商家对于商品信息的掌握和管理显得尤为重要。作为电商平台的佼佼者&#xff0c;京东&#xff08;JD&#xff09;提供了丰富的API接口&#xff0c;使得商家能够轻松地获取商品的详细信息&#xff0c;包括SKU&#xff08;Stock Keeping Unit…

ESP32 烧录固件

第一步&#xff1a;下载固件 git clone --recursive https://github.com/espressif/esp-at.git 第二步&#xff1a;执行编译 在该目录执行 python build.py install 如图&#xff1a; 第三步&#xff1a;选择芯片 输入2 第四步&#xff1a;选择固件 输入1 第五步&#…

Excel中怎样把单元格里的数据拆分成多行?

时常会遇到这种情况&#xff0c;需要将一个单元格里的数据分拆到多行&#xff0c;可以使用公式&#xff0c;这里演示使用基础操作的办法。 按照excel使用经验&#xff0c;可以复制数据&#xff0c;粘贴到MS Word里&#xff0c;这个是excel的同族软件&#xff0c;兼容性好。 在…

window系统安装MySQL

MySQL的安装和配置 根据不同的系统平台&#xff0c;MySQL由不同安装方式和安装包。 官方下载对应的安装包 官网&#xff1a;www.mysql.com 下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) window系统 一、安装包&#xff08;Windows…

JavaScript 如何理解柯里化函数结构及调用

文章目录 柯里化函数是什么逐步理解柯里化函数 柯里化函数是什么 柯里化&#xff08;Currying&#xff09;函数&#xff0c;又称部分求值&#xff0c;是一种函数转换技术。这种技术将一个接受多个参数的函数转换为一系列接受单一参数的函数。具体来说&#xff0c;一个柯里化的…

【研发管理】产品经理知识体系-组合管理

导读&#xff1a;新产品开发的组合管理是一个重要的过程&#xff0c;它涉及到对一系列新产品开发项目进行策略性选择、优先级排序、资源分配和监控。这个过程旨在确保企业能够最大化地利用有限的资源&#xff0c;以实现其战略目标。 目录 1、组合管理、五大目标 2、组合管理的…

张大哥笔记:付费进群创业项目玩法及详细操作教程

今天给大家分享一个赚钱小项目&#xff0c;它就是付费进群系统&#xff0c;这个项目应用范围很广。比如表情包&#xff0c;知识付费&#xff0c;美女写真&#xff0c;虚拟资料&#xff0c;交友扩列等都可以。今天我们就来说一下最近爆火的交友搭子付费进群做个演示案例&#xf…