nginx-2-配置

ops/2024/10/9 6:51:20/

准备配置文件

  • 解压后去除多余内容
worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}
  • 进一步去除,添加注解,nginx的最小配置项
# 表示只启动几个工作进程,具体值为多少,一般根据CPU核数来定,如果CPU为八核,那么此处值就填8。
worker_processes  1;# 定义与服务器事件处理模型相关的参数和指令
events {# 连接数量,每个进程可以处理多少连接。一般就保持默认,1024。worker_connections  1024;
}http {# nginx能够识别出的文件类型,指定一个文件,这个文件中存储了nginx能够识别出的文件类型,默认为nginx.conf同一目录下的mime.types文件include       mime.types;# 文件类型没有在include指定的文件中,会以default_type指定的类型返回数据。default_type  application/octet-stream;# sendfile        on;keepalive_timeout  65;# 该部分就是针对网站代码的配置,如果我们需要配置多个网站,可以复制配置多个serverserver {# 指定访问该网站的端口号,默认为80。listen       80;# 配置域名server_name  localhost;# 匹配以什么开头的URI,默认为/,表示匹配所有请求。如配置了/user,那么请求ip:端口/user/xx就会匹配到该路由。location / {# 指定项目的目录。可以填写绝对路径,也可以填写相对路径。填写相对路径是,默认根路径为/usr/share/nginx。root   html;# 指定了当请求是一个目录时,Nginx应该返回哪个文件作为默认文件。index  index.html index.htm;}}
}

防盗链(网站优化)

  • 自定义service
server {# 指定访问该网站的端口号,默认为80。listen       9999;# 配置域名server_name  localhost;# 匹配以什么开头的URI,默认为/,表示匹配所有请求。如配置了/user,那么请求ip:端口/user/xx就会匹配到该路由。location / {# 指定项目的目录。可以填写绝对路径,也可以填写相对路径。填写相对路径是,默认根路径为/usr/share/nginx。root   opt/test/;}# 拦截三种类型访问location ~* .*\.(gif|jpg|png)$ {# 指定项目的目录。可以填写绝对路径,也可以填写相对路径。填写相对路径是,默认根路径为/usr/share/nginx。root   opt/test/img/;# 放行白名单(防盗链)valid_referers none blocked taobao.com;if($valid_referers){# return 403;# 重写rewrite ^/ http://10.10.100.146:9999/error.webgbreak;}}
}

gzip压缩

  • 作用模块
    - http
    - service
  • 文档
    模块静态压缩官方文档
    模块配置官方文档
  • 核心配置
# 开启gzip压缩
gzip  on
# 压缩类型(js、css\text\json等)文本压缩的效果最好
gzip_type application/type

brotli压缩

优缺

  • 优: 比gzip性能提升10~18%
  • 缺: 普及率低
  • 缺: 仅支持https

集成模块

  • 下载源码
# 1.切换nginx编译路径的上级路径
cd /opt/
# 2.执行命令
sudo git clone https://github.com/google/ngx_brotli.git
# 3.切换ngx_brotli路径
cd ngx_brotli/
# 4.下载算法
sudo git submodule update --init
# 5.切换nginx源码路径下
cd /opt/nginx-1.26.2/
# 安装brotli
sudo apt-get install libbrotli-dev
# 6. 配置
sudo ./configure --prefix=/home/nginx --with-http_ssl_module --add-module=/opt/ngx_brotli
# 7.编译
sudo make
# 8.替换执行文件
sudo mv ./objs/nginx  /home/nginx/sbin/nginx
# 9查看/home/nginx/sbin/nginx -V
  • 修改配置文件
http{# 开启gzip压缩gzip  on# 压缩类型(js、css\text\json等)文本压缩的效果最好gzip_type application/javascrpt# 开启brotli压缩(service 需要配饰ssl)brotli  on# 压缩类型(js、css\text\json等)文本压缩的效果最好brotli_type application/javascrpt}

反向代理域名备案访问

server {listen       80;server_name  www.xxx.com;location / {# 代理转发指定proxy_pass http://192.168.50.12/;}
}

ssl

http(超文本传输协议)转https(超文本传输完全协议)

server {# 监听端口 开启ssl模式listen       443 ssl;# 访问名称 - 域名server_name  www.xx.com;# pem文件位置ssl_certificate      /xxxx/cert.pem;# key文件位置ssl_certificate_key  /xxxx/cert.key;# ssl证书缓存ssl_session_cache    shared:SSL:1m;# 操作时间ssl_session_timeout  5m;# 加密算法ssl_ciphers  HIGH:!aNULL:!MD5;# 服务端的首选算法是否开启ssl_prefer_server_ciphers  on;location / {root   html;index  index.html index.htm;}
}

限流

1>请求限流,漏洞算法

http {# 开辟空间 $binary_remote_addr主机名称; zone空间名; rate限速;limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=1r/s;# 省略其他代码service{# 省略其他代码location /{# burst爆发limit_req zone=ip_limit burst=2;}}
}

2>链接限流,令牌桶算法

http {# 开辟空间 $binary_remote_addr主机名称; zone空间名; rate限速;limit_conn_zone $binary_remote_addr zone=conn_limit:10m;#  省略其他代码service{#  省略其他代码location /{# 限制连接limit_conn conn_limit 1;}}
}

合并请求(优化)

  • 下载三方模块包
git clone https//github.com/alibaba/nginx-http-concat.git
# 加速镜像
git clone https//gitclone.com/github.com/alibaba/nginx-http-concat.git
  • 加载模块
#  配置
sudo ./configure --prefix=/home/nginx --with-http_ssl_module --add-module=/opt/nginx-http-concat
# 编译
sudo make
# 替换执行文件
sudo mv ./objs/nginx  /home/nginx/sbin/nginx
  • 配置参数(http、serrvice、location )

server {# 开启合并请求concat on;# 定义最大能接受文件数量concat_max_files 20;# 如果开启返回400 未开启合并两个文件concat_unique on;# 定义那些文件可以合并concat_type application/javascript;# 文件之间分割concat_delimiter '\n';# 文件不存在权限提示concat_ignore_file_error on;# 监听端口 开启ssl模式listen       443 ssl;# 访问名称 - 域名server_name  www.xx.com;# pem文件位置ssl_certificate      /xxxx/cert.pem;# key文件位置ssl_certificate_key  /xxxx/cert.key;# ssl证书缓存ssl_session_cache    shared:SSL:1m;# 操作时间ssl_session_timeout  5m;# 加密算法ssl_ciphers  HIGH:!aNULL:!MD5;# 服务端的首选算法是否开启ssl_prefer_server_ciphers  on;location / {root   html;index  index.html index.htm;}
}

http://www.ppmy.cn/ops/123045.html

相关文章

Python 基于 flask 的前程无忧招聘可视化系统,Python大数据招聘爬虫可视化分析

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

PCL 点云添加随机噪声并保存

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 添加随机噪声实现 2.1.2 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新&…

【C++】:lambda表达式的高级应用

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 引言 今天 我们来见见lambda表达式的高级用法 用法1&#xff1a;自定义删除器 有些类型的delete方法并不符合自身的析构方法&#xff0c;这时我们就需要自定义删除器。 unique_ptr<FILE> ptr1(fopen…

数据结构——排序(插入排序)

目录 一、插入排序 二、直接插入排序 基本概念&#xff1a; 工作原理&#xff1a; 示例&#xff1a; 代码实现 三、希尔排序 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;工作原理 &#xff08;三&#xff09;示例 &#xff08;四&#xff09;代码实…

Vue3入门 - provide和inject组合使用

在Vue3中&#xff0c;provide和inject是用于实现依赖注入的一对API。它们允许在组件树中传递和接收数据&#xff0c;而不需要通过每一层显式地传递props。在<script setup>语法中&#xff0c;provide可以用来提供一个值&#xff0c;而inject可以用来接收一个已经提供的值…

QD1-P7 HTML常用标签:div和span

本节学习&#xff1a;div 和 span 标签。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p7 ‍ 一、div 标签 用途 ​<div>​ 标签在 HTML 中是一个通用 容器 &#xff0c;用于将 HTML 文档中的内容分组并在文档中划分区域。<div> ​元素本身不具有特定的含…

CSMA/CD协议整理

CSMA/CD协议&#xff0c;即载波监听多路访问/冲突检测技术&#xff0c;是以太网中解决数据包冲突的关键机制。以下是对CSMA/CD协议进行冲突检测的详细解释和介绍&#xff1a; 一、CSMA/CD协议概述 CSMA/CD协议的核心思想是“先听后发&#xff0c;边发边听&#xff0c;冲突停发…

mysql join的使用

MySQL 支持以下 JOIN 语法用于 SELECT 语句和多表 DELETE 和 UPDATE 语句中的 table_references 部分&#xff1a; table_references: 查询中涉及的一个或多个表的引用&#xff0c;可以是简单表名或 JOIN 表达式的组合。 escaped_table_reference [, escaped_table_referenc…