Nginx(参数设置总结)

文章目录

  • Nginx(工作机制&参数设置)
    • 1.Master&Worker工作机制
        • 1.示意图
        • 2.解释
        • 3.Nginx争抢机制
        • 4.accept_mutex解决惊群现象
        • 5.多进程结构不用多线程结构的好处
        • 6.IO多路复用,实现高并发
        • 7.优势
    • 2.参数配置
        • 1.work_processes
          • 1.基本介绍
          • 2.worker_cpu_affinity理解
          • 3.配置实例
          • 4.具体配置
            • 1.进入nginx安装目录,编辑nginx.conf 配置文件,开启两个工作进程,第一个工作进程使用第一个cpu,第二个工作进程使用第二个cpu
            • 2.重载使配置文件生效 `./sbin/nginx -s reload`
            • 3.查看nginx的进程 `ps -ef | grep nginx` ,可以看到有两个工作进程
        • 2.worker_connection
          • 1.基本介绍
          • 2.计算最大并发数
          • 3.配置linux最大打开文件数(是work_connection可以设置的最大值)
            • 1.查看最大打开文件数 `ulimit -n`
            • 2.临时修改最大打开文件数为65535(重启后失效)`ulimit -n 65535`
            • 3.三种永久修改方式
            • 4.使用第三种方式 `vim /etc/security/limits.conf`
            • 5.重启 reboot,然后 `ulimit -n`查看最大打开文件数
            • 6.如果报错内核错误,编辑/etc/pam.d/login配置文件
  • Nginx(总结)
    • 1.Nginx部署核心机制
        • 1.部署微服务到服务器并提供信息
          • 1.服务发现(ip + 端口)
          • 2.资源路径 (必须包含上下文路径)
        • 2.部署Nginx服务到服务器并提供信息
          • 服务发现(ip + 端口)
        • 3.示意图
        • 4.网络问题
          • 1.确保Nginx服务和Tomcat服务可以ping通
          • 2.浏览器所在服务器和Nginx可以ping通
          • 3.Tomcat开启8080端口(如果与Nginx在同一服务器就可以不开),Nginx开启80端口
        • 5.浏览器请求方式
          • 1.Nginx 服务发现(http://192.168.200.128:80) + 资源路径 (/api/say/hello)
          • 2.url = http://192.168.200.128:80/api/say/hello
          • 3.示意图
        • 6.nginx.conf 解析浏览器请求
          • 1.server块全局配置 ***Nginx服务***(ip/域名 + 端口)
          • 2.location块规则,***匹配资源路径*** /api/xxx,这里匹配到 /api/say/hello
          • 3.location块proxy_pass规则,***服务发现***(http://192.168.200.128:8080)
          • 4.***路径拼接*** http://192.168.200.128:8080 +/api/say/hello
          • 5.完整配置
          • 6.解析步骤
        • 7.启动测试
          • 1.启动Tomcat
          • 2.启动Nginx
          • 3.浏览器请求 http://192.168.200.128:8080/api/say/hello
        • 8.Nginx部署常用命令
          • 1.开启防火墙 80 并查询是否成功
          • 2.启动Nginx
            • 1.进入安装目录 /usr/local/nginx
            • 2.启动Nginx(指定配置文件为安装目录/nginx.conf)
            • 3.查看Nginx进程
            • 4.查看Nginx是否在监听
          • 3.编辑Nginx配置文件
            • 1.进入安装目录 /usr/local/nginx
            • 2.编辑配置文件(也有可能是conf/nginx.conf)
          • 4.重载Nginx**(配置文件更新时使用)**
            • 1.进入安装目录 /usr/local/nginx
            • 2.重载
          • 5.关闭Nginx
            • 1.进入安装目录 /usr/local/nginx
            • 2.关闭
          • 6.查看所有开放的端口
        • 9.部署负载均衡
          • 1.部署:添加一台服务器,内容跟原来的一样,只是ip和端口不同
          • 2.网络问题
            • 保证新增的服务器和Nginx可以互相ping通
            • 开启新增服务器的8081端口
          • 3.请求:浏览器请求方式没有变化依然是Nginx的服务发现 + 资源路径
          • 4.解析:需要配置http全局块和server块
            • 1.http全局块
            • 2.server块
        • 10.Nginx部署核心机制总结
          • 1.部署:将资源部署在指定位置并画出示意图,体现ip+端口以及资源路径
          • 2.网络:确保网络畅通,防火墙开启
          • 3.请求:Nginx服务发现 + 资源路径
          • 4.解析:配置 nginx.conf 进行解析
    • 2.nginx.conf 配置文件详解
        • 1.location语法规则
          • 1.语法
          • 2.优先级
          • 3.匹配的规则
        • 2.实际常用规则模板
          • 1.第一个必选规则-精确匹配网站根目录(匹配到即返回)
          • 2.第二个必选规则-处理静态文件请求(匹配到即返回)
            • 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
          • 3.第三个规则就是通用规则,用来转发动态请求到后端应用服务器(匹配符合要求的最长location)
          • 4.常用规则小结
          • 5.nginx.conf 匹配口诀!
            • 1.Nginx服务(ip + 端口)
            • 2.匹配资源路径(根据location匹配资源路径)
            • 3.服务发现(匹配成功则根据 proxy_pass 服务发现)
            • 4.路径拼接(服务发现 与 匹配到的资源路径拼接得到资源)
    • 3.Nginx动静分离
        • 1.决定Nginx服务器要存放静态资源的目录
          • 这里指定图片的存放根路径为 /root/html/
        • 2.存放静态资源
        • 3.浏览器请求方式
          • 1.Nginx 服务发现(http://192.168.200.128:80) + 资源路径 (/search/image/cal.jpg)
          • 2.url = http://192.168.200.128:80/search/image/cal.jpg
          • 3.示意图
        • 4.nginx.conf 解析浏览器请求
          • 1.server块全局配置 ***Nginx服务***(ip/域名 + 端口)
          • 2.location块规则*匹配资源路径* ~* \.(jpg)$ 也就是匹配以.jpg结尾的资源路径,这里匹配到 /search/image/cal.jpg
          • 3.location块root规则,替换资源根路径,这里使用/root/html/来替换/search/image/cal.jpg中的/也就是最后的路径为http://192.168.200.128:80/root/html/search/image/cal.jpg
        • 5.完整配置
        • 6.静态资源的部署说明
          • 1.前端项目build到dist目录下
          • 2.举例dist/hello.html的资源路径就是/static/hello.html
          • 3.此时这个文件的全路径就是 服务发现(本机的ip + 端口) + /static/hello.html
          • 4.如果把这个 /static/hello.html放到Nginx的配置了root的目录下
          • 5.那么此时的浏览器请求方式就是 服务发现(Nginx的ip + 端口) + /static/hello.html
          • 6.静态资源的部署只需要将其放到配置了root的Nginx目录下,然后拦截静态资源,就可以使用服务发现 + 资源路径的方式请求资源

Nginx(工作机制&参数设置)

1.Master&Worker工作机制

1.示意图

image-20240407114952799

2.解释

image-20240407115121172

3.Nginx争抢机制

image-20240407115637074

4.accept_mutex解决惊群现象

image-20240407124315522

5.多进程结构不用多线程结构的好处

image-20240407124618560

6.IO多路复用,实现高并发

image-20240407125005306

7.优势

image-20240407125530674

2.参数配置

1.work_processes
1.基本介绍

image-20240407132323129

2.worker_cpu_affinity理解

image-20240407132438780

3.配置实例

image-20240407132532847

4.具体配置
1.进入nginx安装目录,编辑nginx.conf 配置文件,开启两个工作进程,第一个工作进程使用第一个cpu,第二个工作进程使用第二个cpu

image-20240407132940028

image-20240407132847257

2.重载使配置文件生效 ./sbin/nginx -s reload
3.查看nginx的进程 ps -ef | grep nginx ,可以看到有两个工作进程

image-20240407133701752

2.worker_connection
1.基本介绍

image-20240407134356938

image-20240407134518144

2.计算最大并发数

image-20240407134419880

image-20240407134321731

3.配置linux最大打开文件数(是work_connection可以设置的最大值)
1.查看最大打开文件数 ulimit -n

image-20240407134727846

2.临时修改最大打开文件数为65535(重启后失效)ulimit -n 65535

image-20240407134822060

3.三种永久修改方式

image-20240407135026332

4.使用第三种方式 vim /etc/security/limits.conf

image-20240407135226076

5.重启 reboot,然后 ulimit -n查看最大打开文件数

image-20240407135651788

6.如果报错内核错误,编辑/etc/pam.d/login配置文件

image-20240407135754281

Nginx(总结)

1.Nginx部署核心机制

1.部署微服务到服务器并提供信息
1.服务发现(ip + 端口)
2.资源路径 (必须包含上下文路径)
2.部署Nginx服务到服务器并提供信息
服务发现(ip + 端口)
3.示意图

image-20240407202909151

4.网络问题
1.确保Nginx服务和Tomcat服务可以ping通
2.浏览器所在服务器和Nginx可以ping通
3.Tomcat开启8080端口(如果与Nginx在同一服务器就可以不开),Nginx开启80端口
5.浏览器请求方式
1.Nginx 服务发现(http://192.168.200.128:80) + 资源路径 (/api/say/hello)
2.url = http://192.168.200.128:80/api/say/hello
3.示意图

image-20240407214826110

6.nginx.conf 解析浏览器请求
1.server块全局配置 Nginx服务(ip/域名 + 端口)

image-20240407204251352

2.location块规则,匹配资源路径 /api/xxx,这里匹配到 /api/say/hello
3.location块proxy_pass规则,服务发现(http://192.168.200.128:8080)
4.路径拼接 http://192.168.200.128:8080 +/api/say/hello
5.完整配置
    server {
        listen       80;
        server_name  192.168.200.128;
        
        location /api/ {
          proxy_pass http://192.168.200.128:8080;
        }
    }

6.解析步骤

image-20240407215346712

7.启动测试
1.启动Tomcat
2.启动Nginx
3.浏览器请求 http://192.168.200.128:8080/api/say/hello
8.Nginx部署常用命令
1.开启防火墙 80 并查询是否成功
firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload && firewall-cmd --query-port=80/tcp
2.启动Nginx
1.进入安装目录 /usr/local/nginx
cd /usr/local/nginx
2.启动Nginx(指定配置文件为安装目录/nginx.conf)
./sbin/nginx -c nginx.conf
3.查看Nginx进程
ps -ef | grep nginx
4.查看Nginx是否在监听
netstat -anp | grep nginx
3.编辑Nginx配置文件
1.进入安装目录 /usr/local/nginx
cd /usr/local/nginx
2.编辑配置文件(也有可能是conf/nginx.conf)
vim nginx.conf
4.重载Nginx**(配置文件更新时使用)**
1.进入安装目录 /usr/local/nginx
cd /usr/local/nginx
2.重载
./sbin/nginx -s reload
5.关闭Nginx
1.进入安装目录 /usr/local/nginx
cd /usr/local/nginx
2.关闭
./sbin/nginx -s stop
6.查看所有开放的端口
firewall-cmd --list-all
9.部署负载均衡
1.部署:添加一台服务器,内容跟原来的一样,只是ip和端口不同

image-20240408093125486

2.网络问题
3.请求:浏览器请求方式没有变化依然是Nginx的服务发现 + 资源路径
4.解析:需要配置http全局块和server块
1.http全局块
  • 配置两个服务器的ip + 端口
upstream sunservers {
	server 192.168.200.128:8080;
	server 192.168.200.129:8081;
}
2.server块
  • 修改proxy_pass为上面的upstream的名字sunservers
    server {
        listen       80;
        server_name  192.168.200.128;
        
        location /api/ {
          proxy_pass http://sunservers;
        }
    }
10.Nginx部署核心机制总结
1.部署:将资源部署在指定位置并画出示意图,体现ip+端口以及资源路径
2.网络:确保网络畅通,防火墙开启
3.请求:Nginx服务发现 + 资源路径
4.解析:配置 nginx.conf 进行解析
  • Nginx服务
  • 匹配资源路径
  • 服务发现
  • 路径拼接

2.nginx.conf 配置文件详解

1.location语法规则
1.语法

image-20240406150606136

2.优先级
  • =:精确匹配
  • ^~:匹配以某个路径开头的
  • ~:正则匹配,区分大小写
  • ~*:正则匹配,不区分大小写
  • 普通匹配
3.匹配的规则
  1. 非普通匹配:只要按照优先级匹配到了,就直接返回
  2. 普通匹配:会匹配符合要求的最长路径
  3. 关于普通匹配 /api/ 就相当于/api/* 即只要资源路径的前缀是/api/即可
2.实际常用规则模板
1.第一个必选规则-精确匹配网站根目录(匹配到即返回)
  • Nginx服务 + / 可以匹配到这个location
  • proxy_pass 表示,当匹配到这个的时候,将请求转发到 http://tomcat:8080/index + /
    location = / {
       proxy_pass http://tomcat:8080/index
    }
2.第二个必选规则-处理静态文件请求(匹配到即返回)
有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
  • Nginx服务 + /static/* 可以匹配到这个location
  • root表示,匹配到之后在本服务下找 /webroot/res/ + **/static/***中间的/会自动去掉
    location ^~ /static/ {
       # 请求/static/a.txt 将被映射到实际目录文件:/webroot/res/static/a.txt
       root /webroot/res/;
    }
  • *Nginx服务 + .(gif|jpg|jpeg|png|css|js|html|ico) 可以匹配到这个location
  • root表示,匹配到之后在本服务下找**/webroot/res/ + .(gif|jpg|jpeg|png|css|js|html|ico)* 中间的/会自动去掉
    location ~* \.(gif|jpg|jpeg|png|css|js|html|ico)$ {
       root /webroot/res/;
    }
3.第三个规则就是通用规则,用来转发动态请求到后端应用服务器(匹配符合要求的最长location)
  • Nginx服务 + /* 可以匹配到这个location
  • 如果匹配到则会将请求转发到 http://tomcat:8080/ + /*
    location / {
       proxy_pass http://tomcat:8080/
    }
4.常用规则小结
  • 实际上使用的也就是一个精确匹配一个处理静态文件的匹配,还有一堆通用匹配
  • 前两个匹配是正则匹配,只要匹配到了就返回
  • 最后的一堆都是通用匹配,匹配到了不一定马上返回,直到匹配到符合要求的最长location才会返回
5.nginx.conf 匹配口诀!
1.Nginx服务(ip + 端口)
2.匹配资源路径(根据location匹配资源路径)
3.服务发现(匹配成功则根据 proxy_pass 服务发现)
4.路径拼接(服务发现 与 匹配到的资源路径拼接得到资源)

3.Nginx动静分离

1.决定Nginx服务器要存放静态资源的目录
这里指定图片的存放根路径为 /root/html/
2.存放静态资源

image-20240407222733554

3.浏览器请求方式
1.Nginx 服务发现(http://192.168.200.128:80) + 资源路径 (/search/image/cal.jpg)
2.url = http://192.168.200.128:80/search/image/cal.jpg
3.示意图

image-20240407222955592

4.nginx.conf 解析浏览器请求
1.server块全局配置 Nginx服务(ip/域名 + 端口)

image-20240407204251352

2.location块规则匹配资源路径 ~* .(jpg)$ 也就是匹配以.jpg结尾的资源路径,这里匹配到 /search/image/cal.jpg
3.location块root规则,替换资源根路径,这里使用/root/html/来替换/search/image/cal.jpg中的/也就是最后的路径为http://192.168.200.128:80/root/html/search/image/cal.jpg
5.完整配置
    server {
        listen       80;
        server_name  192.168.200.128;

        location ~* \.(jpg)$ {
           root /root/html/;
        }
    }

6.静态资源的部署说明
1.前端项目build到dist目录下
2.举例dist/hello.html的资源路径就是/static/hello.html
3.此时这个文件的全路径就是 服务发现(本机的ip + 端口) + /static/hello.html
4.如果把这个 /static/hello.html放到Nginx的配置了root的目录下

image-20240407231839189

5.那么此时的浏览器请求方式就是 服务发现(Nginx的ip + 端口) + /static/hello.html
6.静态资源的部署只需要将其放到配置了root的Nginx目录下,然后拦截静态资源,就可以使用服务发现 + 资源路径的方式请求资源

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

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

相关文章

杭电acm2018 母牛的故事 Java解法 经典递归

标准递归题 先模拟 接着找递归出口 再找递归通式 想想看 今天的母牛等于前一天的母牛数加上今天出生的母牛 而三天前的母牛所有母牛都能生一头 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scnew Scanner(System.in);l…

交互中的“互”难以产生的原因

脑机交互技术的目标是通过分析和解读大脑活动,将其与特定的意图、指令或行为连接起来。通过训练和分析,可以建立起大脑活动与特定行为或意图之间的关联模型,从而实现脑机交互的应用,例如控制外部设备、传递信息等。然而&#xff0…

unaipp推荐算法的汽车租赁系统zaxzu 微信小程序hbuiderx

随着现代汽车租赁管理的快速发展,可以说汽车租赁管理已经逐渐成为现代汽车租赁管理过程中最为重要的部分之一。但是一直以来我国传统的汽车租赁管理并没有建立一套完善的行之有效的汽车租赁管理系统,传统的汽车租赁管理已经无法适应高速发展,…

Django中如何让页面之间建立关系

今天给大家讲解两种让页面建立联系的方式 一、重定向 二、表单提交 先看第一种方式,重定向 首先需要了解客户端发起请求的过程 1、客户端向服务端发起请求,比如请求地址是:http://127.0.0.1:8000/lili/submit/ 2、程序根据路由找到视图函数 3、执行视…

从一到无穷大 #26 Velox:Meta用cpp实现的大一统模块化执行引擎

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言业务案例PrestoSparkXStreamDistributed messaging systemData IngestionData Pr…

ES集群数据备份与迁移

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、文章涉及概念讲解二、操作步骤1.创建 snapshot repository操作主机hadoop1分别操作从机hadoop2和hadoop3 2. 查看仓库信息3. 备份索引,生成快照…

电商中文场景多模态测试prompt

魔搭社区汇聚各领域最先进的机器学习模型,提供模型探索体验、推理、训练、部署和应用的一站式服务。https://www.modelscope.cn/datasets 多模态大模型Yi-VL-plus体验 效果很棒 - 知乎最近测了一下零一万物的多模态大模型Yi-VL-plus的效果,发现多模态理解…

【hive】transform脚本

文档地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManualTransform 一、介绍二、实现1.脚本上传到本地2.脚本上传到hdfs 三、几个需要注意的点1.脚本名不要写全路径2.using后面语句中,带不带"python"的问题3.py脚本Shebang…

Nginx(搭建高可用集群)

文章目录 1.基本介绍1.在微服务架构中的位置2.配置前提3.主从模式架构图 2.启动主Nginx和两个Tomcat1.启动linux的tomcat2.启动win的tomcat3.启动主Nginx,进入安装目录 ./sbin/nginx -c nginx.conf4.windows访问 http://look.sunxiansheng.cn:7777/search/cal.jsp 3…

基于 Dockerfile 部署nginx服务(实现HTTPS功能)

目录 前言 1、任务要求 2、建立工作目录并上传nginx安装包 3、创建自签名证书 4、创建 nginx Dockerfile 文件 5、准备并编写 nginx.conf 配置文件 6、准备nginx页面文件 7、工作目录文件结构 8、生成镜像 8、启动容器并开启宿主机端口映射 9、浏览器测试 前言 Ngi…

DS:顺序表、单链表的相关OJ题训练(1)

欢迎各位来到 Harper.Lee 的学习小世界! 博主主页传送门:Harper.Lee的博客主页 想要一起进步的uu可以来后台找我交流哦! 在DS:单链表的实现 和 DS:顺序表的实现这两篇文章中,我详细介绍了顺序表和单链表的…

CMakeLists.txt语法规则:foreach 循环基本用法

一. 简介 cmake 中除了 if 条件判断之外,还支持循环语句,包括 foreach()循环、while()循环。 本文学习 CMakeLists.txt语法中的循环语句。 CMakeLists.txt语法中 有两种 循环实现方式:foreach循环与 while循环。 二. CMakeLists.txt语法规则…

tomcat+maven+java+mysql图书管理系统1-配置项目环境

目录 一、软件版本 二、具体步骤 一、软件版本 idea2022.2.1 maven是idea自带不用另外下载 tomcat8.5.99 Javajdk17 二、具体步骤 1.新建项目 稍等一会,创建成功如下图所示,主要看左方目录相同不。 给maven配置国外镜像 在左上…

asp.net朱勇项目个人博客(3)

引文:按照书上的项目,我们最后实现管理端的三个增删改查的功能即可,相对与三个增删改查,文章,分类和留言,这里我们所需要用的的关联的一个表就是文章表,因为文章表每一个文章的增加显示和修改都需要对应的一个分类&…

Spring入门及注解开发

1 引言 自定义注解可以用来为代码添加元数据信息,简化配置,提高代码的可读性和可维护性。通过自定义注解,可以实现自定义的业务逻辑、约束条件、配置参数等功能。在Spring中,自定义注解常用于标记组件、配置依赖注入、AOP切面等。 自定义注解可以添加元数据信息,低代码框…

银行智能化数据安全分类分级实践分享

文章目录 前言一、数据安全智能分类分级平台建设背景二、数据安全分类分级建设思路和实践1、做标签– 数据安全标签体系2、打标签– 鹰眼智能打标平台 3.03、用标签– 全行统一“数据安全打标签结果”服务提供前言 随着国家对数据安全的高度重视,以及相关法律法规的出台,数据…

【linuxC语言】stat函数

文章目录 前言一、stat函数二、示例代码总结 前言 在Linux系统编程中,stat() 函数是一个非常重要的工具,用于获取文件的元数据信息。无论是在系统管理、文件处理还是应用开发中,都可能会用到 stat() 函数。通过调用 stat() 函数,…

ue引擎游戏开发笔记(31)——对角色移动进行优化:角色滑步处理

1.需求分析: 角色的移动与动画不匹配,角色移动起来像是在滑行。。。适当进行优化。 2.操作实现: 这个问题本质是角色的运动速度并没有匹配世界动画的运行速度,不论世界动画快慢于角色移动速度,都会感到有滑步感。所以…

基于 Spring Boot 博客系统开发(六)

基于 Spring Boot 博客系统开发(六) 本系统是简易的个人博客系统开发,为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。🌿🌿🌿 基于 Spring Boot 博客系统开发(五)&#x1f…

适合打工人的赚钱软件有哪些?盘点5个实用的赚钱软件(真实靠谱)

在这个互联网时代,手机不仅仅是我们的通讯工具,更是我们赚钱的小助手。今天,就让我带你一探究竟,揭秘那些真实靠谱的赚钱软件,让你在家也能轻松赚钱! 一、抖音极速版:刷视频也能赚钱 抖音极速版…