nginx介绍及搭建

架构模型

Nginx是由一个master管理进程、多个worker进程组成的多进程模型。master负责管理worker进程,worker进程负责处理网络事件,整个框架被设计为一种依赖事件驱动、异步、非阻塞的模式。
在这里插入图片描述优势:
1、充分利用多核,增强并发处理能力;
2、多worker间可以实现负载均衡;
3、Master统管worker行为:在worker异常后,可以主动拉起worker进程,从而提升了系统的可靠性。并且由Master进程控制服务运行中的程序升级、配置项修改等操作,从而增强了整体的动态可扩展与热更的能力;

安装

yum方式

yum install -y nginx
#查看是否安装成功
pcre-config --version
systemctl start nginx && systemctl enable nginx
#检查服务
ps -ef | grep nginx        
netstat -ntlp | grep 80
#检查配置文件
nginx -t
systemctl restart nginx 
systemctl start nginx 
systemctl stop nginx 

编译方式

wget http://nginx.org/download/nginx-1.22.0.tar.gz
tar -zxvf nginx-1.22.0.tar.gz

/下载路径/configure --prefix=/安装路径

#下载依赖
yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel      
make && make install 
# 启动服务
/安装路径/sbin/nginx
#重新加载
./nginx -s reload
#服务关闭
./nginx -s stop
#服务开启
./nginx

基本配置

主配置文件/etc/nginx/nginx.conf;如果是openresty,则在/usr/local/openresty/nginx/conf/nginx.conf。

# worker进程的数量,建议数量<=服务器的总核心数
worker_processes  4;                               
events {
# 单个worker进程并发最大连接数;
# nginx并发总链接数 = worker_processes * worker_connections,建议数量<=文件打开数
    worker_connections  256;
}
http {
# include为http模块调取的配置文件
# mime.types文件是nginx可处理的静态媒体资源类型
    include       mime.types;
# 定义默认类型,普通文本为text/plain
    default_type  application/octet-stream;
# 是否能使用sendfile()传输文件,该属性可以大大提高Nginx处理静态资源的性能
    sendfile        on;
# 链接超时时间
    keepalive_timeout  65;
    server {
# nginx服务监听端口,默认为80
        listen       80;
# 指定网址域名信息,例:www.abc.com;默认为主机地址,通过输入主机地址访问页面
        server_name  localhost; 
# url为/时
        location / {
# 指定网址站点目录
            root   html;
# 访问主页后,无对应站点时,反馈的信息,默认打开此配置文件
            index  index.html index.htm;
        }
# 错误页面,优雅显示配置模块
        error_page   500 502 503 504  /50x.html;                    
        location = /50x.html {
            root   html;
        }
    }
}

常用项

在这里插入图片描述在这里插入图片描述

反向代理

在这里插入图片描述
客户端发送请求到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。此过程客户端无法感知代理,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

        location / {
            echo "this is 100 / page";
        }
        location /a {
            proxy_pass http://10.0.0.101:80/;
        }
        location /b {
            proxy_pass http://10.0.0.102:80/;
        }

# proxy_pass为反向代理配置, 即流量由代理端转发至后端响应。注意结尾的/号,如果不配置会代表其他用法。

匹配规则

=:优先级最高;
^~:优先级其次,匹配以xx开头;
~ ^/\w: 优先级第三,匹配字母、数字、下划线或汉字(正则表达式)
/:优先级最低;

  server {
        listen       80;
        server_name  localhost;
        # 需要在server配置模块中添加配置, 否则默认会下载
        default_type text/html;

        location / {
            echo "this is / page";
        }
        location = /a {
            echo "this is = /a page";
        }
        location ^~ /a {
            echo "this is ^~ /a page";
        }
        location ~ ^/\w {
            echo "this is ~ ^/\w page";
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

动静分离

nginx对静态页面的处理能力远高于tomcat,非常擅长将css、js、图片等资源以http协议的方式返回给客户端。故静态请求交由nginx,动态请求交由tomcat,提升系统吞吐量,,降低由单个服务器的压力。

在这里插入图片描述

location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
# 静态数据放入客户端的缓存,七天内有效
	    root /webapps/projectname/code/static-resource;
	    expires 7d;
	}

location / {
# 动态请求转交tomcat
	proxy_pass http://127.0.0.1:8080;
}

负载均衡

    http:
        upstream group {
        server 10.0.0.101:80;
        server 10.0.0.102:80;
        }

    server:
        location /lb {
            proxy_pass http://group/;
        }

调度种类

轮询:每个请求按时间顺序逐一分配到不同的后端服务器;
在这里插入图片描述权重:weight值越大,被访问的概率越高;
在这里插入图片描述

ip hash:每个请求按访问ip的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题;

在这里插入图片描述

fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配;
在这里插入图片描述

url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效;
在这里插入图片描述

几种状态

down:当前的后端server不参与负载;
weight:默认为1, 被访问的概率;
max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream模块定义的错误 ;
fail_timeout:失败访问达到max_fails次数后,暂挂的时间。;
backup: 所有非backup后端server处于宕机或者忙的时候,转发请求到backup后端server;

在这里插入图片描述

nginx的主备: link

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

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

相关文章

Python快速导入id至json文件(2024.3.19)

Python实现id导入至json文件 2024.3.19 需求分析1、输入数据介绍1.1 三个.txt文件1.1.1 computers.txt&#xff08;计算机&#xff09;1.1.2 cameras.txt&#xff08;摄像头&#xff09;1.1.3 monitors.txt&#xff08;显示器&#xff09; 1.2 单个.xlsx文件 2、实现思路3、Pyt…

软考81-上午题-【面向对象技术3-设计模式】-行为型设计模式01

一、行为型设计模式一览 二、责任链模式 2-1、意图 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 1-2、结构 1-3、代码实现 1-4、适…

基于python的4s店客户管理系统

技术&#xff1a;pythonmysqlvue 一、背景 进入21世纪网络和计算机得到了飞速发展&#xff0c;并和生活进行了紧密的结合。目前&#xff0c;网络的运行速度以达到了千兆&#xff0c;覆盖范围更是深入到生活中的角角落落。这就促使管理系统的发展。网上办公可以实现远程处理事务…

一文带你详解天池电商数据集

行业介绍&#xff1a; 淘系技术部隶属于阿里巴巴新零售技术事业群&#xff0c;支撑淘宝、天猫核心电商以及闲鱼、躺平等创新业务&#xff0c;服务9亿用户&#xff0c;赋能各行业1000万商家。 淘系技术打造了全球领先的线上新零售技术平台&#xff0c;并作为核心技术团队保障了…

常用大数据组件的Web端口号总结

常用大数据组件的Web端口号总结 网站访问方式 在地址栏中输入虚拟机名称对应组建的Web端口号&#xff0c;回车访问。 常用大数据组建的Web端口号 Hadoop HDFS&#xff1a;9870Hadoop YARN ResourceManager&#xff1a;8088JobHistoryServer&#xff1a;19888 Zeppelin&…

css 如何获取分辨率(使用@media查询)

在CSS中&#xff0c;可以使用media查询来应对不同的屏幕分辨率。例如&#xff0c;您可以为不同的屏幕宽度设置不同的样式规则。 /* 针对屏幕宽度小于600px的样式 */ media screen and (max-width: 599px) {body {background-color: lightblue;} }/* 针对屏幕宽度大于或等于600…

“垃圾不落地,捡跑来助力”学雷锋志愿服务暨党支部党日活动

指导思想 紧紧围绕建设和谐社会主题&#xff0c;以创建文明为契机&#xff0c;学习雷锋精神&#xff0c;为人民服务为宗旨&#xff0c;大力开展志愿捡跑活动&#xff0c;激发大家积极参与志愿活动的热情&#xff0c;大力弘扬奉献、友爱、互助、进步的志愿服务精神。 活动启动 …

UDS诊断协议

UDS 主要功能&#xff1a;读取故障&#xff0c;数据传输&#xff0c;上传下载&#xff0c;复位等 借鉴参考了shnsxz大佬的博客 借鉴参考了fish_study_csdn大佬的博客 诊断请求 第一字节 为了解决数据过长&#xff0c;即分包的问题&#xff0c;15765-2总共定义了4种类型的帧结…

Vue+SpringBoot打造智慧家政系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…

《论文阅读》带边界调整的联合约束学习用于情感原因对提取 ACL 2023

《论文阅读》带边界调整的联合约束学习用于情感原因对提取 前言简介Clause EncoderJoint Constrained LearningBoundary Adjusting损失函数前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Joint Cons…

linux 安装rocketmq并使用

RocketMQ 因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨&#xff0c;RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案&#xff0c;被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务…

掌握 Istio:部署完成后如何运用?

一、环境情况 环境&#xff1a;Ubuntu20.04 机器数量&#xff1a;单机1台 IP&#xff1a;10.9.2.83 二、准备知识 为什么使用 Istio&#xff1f; Istio提供了一种更高级别的服务网格解决方案&#xff0c;它可以简化和加强 Kubernetes 集群中的服务间通信、流量管理、安全…

小红书图片怎么提取?小红书图片提取原图方法!

说到小红书&#xff0c;不少女性群体都知道这个&#xff0c;他的价值很高而且变现对于大多数做自媒体的小伙伴来说&#xff0c;也是不错的选择&#xff01; 小红书对于普通大众还是互联网创作者来说&#xff0c;都太实用了&#xff0c;唯一的缺点可能就是当我们需要存储他的图…

如何在Linux安装Yearning并修改配置文件实现无公网IP远程访问本地管理界面

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用…

LeetCode刷题【树状数组、并查集】

目录 树状数组307. 区域和检索 - 数组可修改406. 根据身高重建队列673. 最长递增子序列的个数1409. 查询带键的排列 并查集128. 最长连续序列130. 被围绕的区域 树状数组 307. 区域和检索 - 数组可修改 给你一个数组 nums &#xff0c;请你完成两类查询。 其中一类查询要求 …

EasyExcel模板填充list时按第一行格式合并单元格(含分页线设置)

前言&#xff1a; 在使用easyExcel填充list时&#xff0c;第一行存在合并单元格的情况下&#xff0c;后面使用forceNewRow()填充的行却没有合并样式。 模板&#xff1a; 填充后&#xff1a; 自定义拦截器&#xff1a; 根据官方文档的提示&#xff0c;我们需要自定义拦截器来…

21个 JVM 技术点详解(附面试解答)

最近兄弟们面试&#xff0c;都逃不过被 JVM 问题轰炸的命运&#xff0c;为啥面试官喜欢拿 JVM 说事呢&#xff1f;V 哥认为&#xff0c;除了要问倒你&#xff0c;就是要压你薪水&#xff0c;咱绝对不能怂&#xff0c;俗话说的好&#xff1a;兵来将挡&#xff0c;水来土掩&#…

VS+QT Debug正常但Release无法识别头文件

&#xff01;&#xff01;&#xff01;&#xff0c;这个问题一般是在第一次编译的时候遇见的&#xff0c;包括之前使用debug也是 在Qt Installation一定要修改成自己版本的编译器&#xff0c;修改一次以后基本是不用再修改的

力扣---括号生成---回溯---dfs/二进制

暴力--二进制 采用与&#xff1a;力扣---子集---回溯&#xff08;子集型回溯&#xff09;---递归-CSDN博客 中二进制求解一样的思路&#xff0c;即遍历0~-1&#xff08;从二进制去考虑&#xff09;&#xff0c;如果这个数的第 i 位为0&#xff0c;则括号的第 i 位为‘&#xff…