nginx-2-配置

news2024/10/10 0:25:27

准备配置文件

  • 解压后去除多余内容
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;

	# 该部分就是针对网站代码的配置,如果我们需要配置多个网站,可以复制配置多个server
    server {
		# 指定访问该网站的端口号,默认为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.webg
			break;
		}
	}
}

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.coloradmin.cn/o/2200505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库软题7-数据库设计

一、概念结构设计 题1-ER图的属性分类 题2-局部ER图的冲突分类 1.命名冲突 命名冲突有同名异义,异名同义2.结构冲突 结构冲突分为:统一实体不同属性,同一对象在不同关系里可能为属性或者实体 教师其实就是职工,他们有不同的属性…

基于Arduino的超声波测距模块HC-SR04

一. HC-SR04超声波模块简介 HC-SR04超声波模块是一种常用的测距模块,通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差,并据此求出距离。它主要由两个‌压电陶瓷超声传感器和一个外围信号处理电路构成&#…

重生之我在代码随想录刷算法第十九天 | 第77题. 组合、216.组合总和III、 17.电话号码的字母组合

参考文献链接:代码随想录 本人代码是Java版本的,如有别的版本需要请上代码随想录网站查看。 第77题. 组合 力扣题目链接 解题思路 这道题目乍一看可以用暴力解法解决,但如果k的数量增加那就需要套特别多的循环,所以这种组合类…

植物大战僵尸修改器-MFC

创建项目 创建mfc应用 基于对话框 打开资源视图下的 IDD_MFCAPPLICTION2_DIALOG 限制对话框大小 将属性中Border的值改为对话框外框 删除对话框中原有的控件 属性-外观-Caption 设置对话框标题 工具箱中拖放一个按钮 修改按钮名称 将按钮ID改为IDC_COURSE 在MFCApplication2…

django(二):定义第一个函数及url介绍

1.定义index函数 """ django里的第一个函数必须是request,不写会报错 """def index(request):return HttpResponse("Hello, world. Youre at the index of djangoProject.")注意! ①.index函数里的形参必须为request ②.r…

STM32输入捕获模式详解(上篇):原理、测频法与测周法

1. 前言 在嵌入式系统的开发过程中,常常需要对外部信号进行精确的时间测量,如测量脉冲信号的周期、频率以及占空比等。STM32系列微控制器提供了丰富的定时器资源,其中的输入捕获(Input Capture, IC)模式能实现对信号的…

【测试】BUG篇——BUG

bug的概念 定义:⼀个计算机bug指在计算机程序中存在的⼀个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault),这些bug使程序⽆法正确的运⾏。Bug产⽣于程序的源代码或者程序设计阶段的疏忽或者错误。 准确的来说: 当且仅当规格说明&am…

网站集群批量管理-Ansible(ad-hoc)

1. 概述 1. 自动化运维: 批量管理,批量分发,批量执行,维护 2. 无客户端,基于ssh进行管理与维护 2. 环境准备 环境主机ansible10.0.0.7(管理节点)nfs01 10.0.0.31(被管理节点)backup10.0.0.41(被管理节点) 2.1 创建密钥认证 安装sshpass yum install -y sshpass #!/bin/bash ##…

SpringBoot整合MyBatis记录

整体目录结构 创建数据库 创建一个MySQL的表,表名是student。 create table student (id int auto_increment comment 唯一标识idprimary key,name varchar(30) not null comment 姓名,age int not null comment 年龄 ) 插入一条数据记录到数据库当中去…

【数据结构与算法-高阶】并查集

【数据结构与算法-高阶】并查集 🥕个人主页:开敲🍉 🔥所属专栏:数据结构与算法🍅 🌼文章目录🌼 1. 并查集原理 2. 并查集实现 3. 并查集应用 1. 并查集原理 在一些应用问题中&…

Matlab|基于遗传粒子群算法的无人机路径规划【遗传算法|基本粒子群|遗传粒子群三种方法对比】

目录 主要内容 模型研究 部分代码 结果一览 下载链接 主要内容 为了更高效地完成复杂未知环境下的无人机快速探索任务,很多智能算法被应用于无人机路径规划方面的研究,但是传统粒子群算法存在粒子更新思路单一、随机性受限、收敛速度慢…

修改calibre-web最大文件上传值

修改calibre-web最大文件上传值 Windows安装calibre-web,Python-CSDN博客文章浏览阅读541次,点赞10次,收藏11次。pip install calibreweb报错:error: Microsoft Visual C 14.0 or greater is required. Get it with "Microso…

案例:问题处理与原因分析报告的模板

系统上线后暴露的问题也是一种财富,我们需要从中吸收经验教训,规避其他类似的问题。对于上线后的问题如何进行原因分析,我提供两个分析报告的模板,供大家参考。 模板案例1:共性现象的原因分析报告 模板案例二&#xf…

C(十三)for、while、do - while循环的抉择 --- 打怪闯关情景

前言: 继C(十)for循环 --- 黑神话情景之后👉 https://blog.csdn.net/2401_87025655/article/details/142684637 今天,杰哥想用一个打怪闯关的场景让与大家一起初步认识一下for、while、do - while循环的抉择。&#xf…

Docker在linux系统中的下载与使用

Docker在linux系统中的下载与使用 一、docker作用,下载及安装二、docker镜像三、创建容器四、容器数据卷 一、docker作用,下载及安装 ubuntu下载安装docker 命令:在ubuntu上面执行这个命令 Docker version:查看docker是否安装成功 配置阿里云镜像加速:进入阿里云网站…

阿里140滑块-滑块验证码逆向分析思路学习

一、声明! 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 文章中所有内容仅供学习交流使用,不用于其他任何目的,均已做脱敏处…

JUC高并发编程8:读写锁

1 概述 1.1 悲观锁和乐观锁 在并发编程中,锁机制是用来控制多个线程对共享资源的访问。悲观锁和乐观锁是两种不同的并发控制策略。 1.1.1 悲观锁(Pessimistic Locking) 悲观锁假设在最坏的情况下,多个线程会同时访问和修改共享…

Qt-QDockWidget浮动窗口相关操作(49)

目录 描述 使用 描述 在 Qt 中,浮动窗⼝也称之为铆接部件。浮动窗⼝是通过 QDockWidget类 来实现浮动的功能。浮动窗口⼀般是位于核心部件的周围,可以有多个。 使用 创建我们可以参考下面的语法格式 使用起来也很简单,不过只能创建一个 Q…

【C语言】使用结构体实现位段

文章目录 一、什么是位段二、位段的内存分配1.位段内存分配规则练习1练习2 三、位段的跨平台问题四、位段的应用五、位段使用的注意事项 一、什么是位段 在上一节中我们讲解了结构体,而位段的声明和结构是类似的,它们有两个不同之处,如下&…

创建osd加入集群

故障原因:ceph节点一个磁盘损坏,其中osd69 down了,需要更换磁盘并重新创建osd加入ceph集群。 信息采集: 更换磁盘前,查询osd69对应的盘符: 将对应的故障磁盘更换后,并重做raid,然后查…