Linux服务:Nginx服务部署及基础配置

news2024/12/27 15:20:18

目录

一、Nginx介绍

1、Nginx简介

2、I/O模型相关概念

3、Nginx事件驱动模型

二、部署Nginx

1、yum部署Nginx

2、编译安装Nginx

三、Nginx使用

1、基础使用

2、nginx信号

四、web服务选择及优化

1、Nginx与Apache对比

2、Nginx服务调优


一、Nginx介绍

1、Nginx简介

①作用:支持七层(应用层)和四层(传输层)反向代理、可做web服务器。

②特性:高可靠性、支持热部署、可扩展性好、高并发高性能、单机部署。

⑤进程:一个主进程master生成多个worker子进程,worker子进程负责处理工作。

2、I/O模型相关概念

①Nginx服务使用异步非阻塞模式:请求不需要排队,会反馈任务的完成结果。

②Apache服务使用同步阻塞模式:请求需要排队,且不会主动返回结果。

③同步/异步:关注的是消息通信机制,即调用者在等待一件事情的处理结果时。被调用者是否提供完成。

④同步:调用者需要主动询问结果。

⑤异步:调用者不需要主动询问结果,被调用者会主动返回结果。

⑥阻塞:系统同时只能处理1个请求,另外的请求需要排队。

⑦非阻塞:系统同时处理多个请求。

3、Nginx事件驱动模型

①select:一个应用程序,代理系统功能处理异步请求,最大连接数是1024个。

它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。

②poll:select加强版取消了1024最大连接数。

poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存储的。

③epoll:poll的加强版。

epoll可以理解为event poll,不同于忙轮询和无差别轮询,epoll会把哪个流发生了怎样的I/O事件通知我们。所以我们说epoll实际上是事件驱动(每个事件关联上fd)的,此时我们对这些流的操作都是有意义的。

二、部署Nginx

1、yum部署Nginx

①使用yum部署Nginx需要先安装epel-release扩展包,官方源默认没有Nginx的yum源。

yum install epel-release  -y
#安装epel-release扩展源

②扩展源安装完后直接安装Nginx。

yum install nginx -y 
#安装nginx服务

③使用yum安装的nginx配置文件位置在:/etc/nginx.conf。默认根目录在:/usr/share/nginx/html。默认日志文件在:/var/log/nginx/路径下。

2、编译安装Nginx

①官网下载安装包,nginx官网地址nginx news,进入后找到右边菜单栏的download,进入后选择自己想要下载的版本可以直接下载到本地然后传到Linux系统中或右键复制该包的下载连接在Linux系统中wget此地址直接下载到Linux系统中。

②安装包下载完成后安装编译需要的依赖环境和工具,然后进入对应的目录进行解压编译。

yum -y install gcc pcre-devel openssl-devel zlib-devel
#安装编译安装需要的依赖包和工具
cd /opt    
#进入指定安装包下载的目录 /opt下
tar xf nginx-1.18.0.tar.gz
#将nginx包解压到当前文件夹
cd nginx-1.18.0
#进入解压后nginx包中
./configure 
#执行当前目录下的configure脚本检测编译安装环境和工具
--prefix=/apps/nginx \
#执行脚本时指定路径为 /apps/nginx文件夹中,若没有此文件夹需要先创建再进行编译指定
--user=nginx \
#指定用户为nginx用户
--group=nginx \
#指定组为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

make   
#执行完成检测编译安装环境和工具后将nginx安装包翻译为二进制
make install 
#翻译完成后将包写入磁盘中

③写进磁盘完成后进入部署的文件夹使用绝对路径启动nginx服务,然后查看是否有nginx进程。

/apps/nginx/sbin/nginx 
#使用绝对路径启动nginx
ps aux |grep nginx
#查看是否有nginx进程

④至此编译安装完成,本文资源下载中有一键部署nginx脚本,名称为nginx.sh。

三、Nginx使用

注意:以下命令若非yum安装使用时要使用绝对路径调用nginx命令,或将编译安装路径中的sbin文件夹中的nginx程序拷贝到/usr/sbin路径下。

1、基础使用

①nginx -V 查看安装了那些模块

②nginx -v 查看版本号

③nginx -s 发送信号 后面可以跟stop、reload、quit、reopen

④nginx -t 检查著配置文件语法

nginx -g 修改执行用户ps aux |grep nginx中查看。需要注销配置文件中的user nginx中。nginx -g "daemon off"前台运行,默认后台运行容器中需要使用。

⑥nginx -c 指定配置文件,一般用于.service文件中

2、nginx信号

①quit信号 -----SIGTERM,直接停止,不等服务执行完,nginx -s quit或kill -TERM执行。

②stop信号-----SIGQUIT,优雅的退出,等所有服务执行完再退出,nginx -s stop 或kill -QUIT执行。

③reopen信号---SIGUSER1 分隔日志。

创建新的nginx日志时需要发送USER1信号给nginx主进程才可以生效。kill -USER1 nginx主进程pid号。

④SIGUSER2信号,优雅的升级,不影响正在使用的用户,kill -USER2执行。

⑤reload信号----SIGHUP 重新加载配置文件,nginx -s  reload或kill -HUP执行。

四、web服务选择及优化

1、Nginx与Apache对比

①Nginx使用异步非阻塞工作模式,Apache使用同步阻塞模式。

②Nginx处理静态资源更好,Apache处理动态资源更好。

③Nginx是轻量级web服务器,耗费资源比Apache少。

④Nginx抗并发性更好,Apache更稳定。

⑤Apache对接PHP简单,Nginx对接需要借助其他后端工具。

2、Nginx服务调优

①根据cpu数量配置master有多少个worker子进程。

配置文件全局中修改:work_processes auto(表示根据cpu数量决定个数)。

②设置长链接超时时间。

keepalive_timeout 50。

③调整nginx进程优先级。

worker_priority -20  (范围-20到19,越小优先级越高)

④调整nginx可打开文件数量。

worker_rlimit_nofile 65536;

需要配合修改内核参数vim /sercurity/limits.conf文件中加入下面参数重启机器即可。

*soft nofile 数量

*hard nofile 数量

⑥调整每个worker进程可打开文件数量,注意需要配合nginx总共可以打开文件数量限制。

worker_connections  数量;

⑦隐藏nginx版本号在http模块中添加以下参数。

   server_tockens off

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

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

相关文章

SAP ABAP

方法一: REPORT ZDCH_09_TEST2. ************************************************************************ * DATEN DEFINITION * *********************************************************************…

【数据结构】二叉树-堆实现及其堆的应用(堆排序topK问题)

文章目录一、堆的概念及结构二、堆的实现1.结构的定义2.堆的初始化3.堆的插入4.堆的向上调整5.堆的删除6.堆的向下调整7.取出堆顶元素8.返回堆的元素个数9.判断堆是否为空10.打印堆中的数据11.堆的销毁三、完整代码1.Heap.h2.Heap.c3.test.c四、堆排序1.堆排序2.建堆3.选数4.完…

Shopee、ebay、亚马逊等跨境卖家了解测评的一篇干货

随着时代的发展,大家越来越喜欢网购,国外也有亚马逊、沃尔码、阿里国际、速卖通、ebay、shopee、Lazada、ozon、temu等等,而国外这些平台也有很大的市场,跨境电商也随时诞生,而当今社会环境实体生意越来越难做&#xf…

DAMA认证|数据治理产业上规模需要做到“三化”

数据治理是开启数据安全体系化建设的第一步,需要从产业层面做大做强,支撑数据安全整体框架,为数据流通提供安全保障,推动促进数字化产业进一步发展。 规模化发展是数据治理产业的瓶颈,行业数字化业务的复杂性和过多的定…

k8s安装tekton,编写task

文章目录一、官方安装二、国内资源安装安装tekton安装dashboard安装CLI三、demo编写task.yaml编写taskRun.yaml使用tkn命令查看参考文章一、官方安装 地址:https://tekton.dev/docs/installation/pipelines/#installing-tekton-pipelines-on-kubernetes 注意&#…

Spring MVC 源码之MultipartResolver 组件

MultipartResolver 组件,内容类型( Content-Type )为 multipart/* 的请求的解析器,主要解析文件上传的请求。例如,MultipartResolver 会将 HttpServletRequest 封装成 MultipartHttpServletRequest 对象,便于获取参数信息以及上传…

【NVMEM子系统】二、NVMEM驱动框架

个人主页:董哥聊技术我是董哥,嵌入式领域新星创作者创作理念:专注分享高质量嵌入式文章,让大家读有所得!文章目录1、前言2、驱动框架3、源码目录结构4、用户空间下的目录结构1、前言 NVMEM SUBSYSTEM,该子系…

视频片段怎么做成gif图?快试试这2种方法

动态gif图片作为当下非常常用的表情包,其丰富的内容生动的画面深受大众喜爱。那么,当我们想要将电影或是电视剧中的某一片段做成gif动态图片的时候,要如何操作呢?接下来,给大家分享两招视频转化gif的小窍门–使用【GIF…

【力扣-Python-1】两数之和(easy)

https://leetcode.cn/problems/two-sum/题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答…

uboot下实现U盘自动升级程序的思路分析(基于USB系统、eMMC系统、FAT32文件系统)

1、常见的升级方式 1.1、应用程序升级 优点:在图形化界面操作,只需要选中升级文件并点击升级即可,操作简单; 缺点:应用程序必须能正常启动,当程序出现bug就不能升级,可靠性差; 总结…

旺店通与金蝶云星空对接集成采购入库单接口

旺店通旗舰奇门与金蝶云星空对接集成采购入库单查询连通销售退货新增V1(12-采购入库单集成方案-P)数据源系统:旺店通旗舰奇门旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案…

Prometheus集群分布式架构浅析

集群行为是一种常见于自然界中鱼群、鸟群、蜂群等低等群居生物的集体行为,受此启发形成了无人机集群的概念。无人机集群不是多无人机间的简单编队,而是通过必要的控制策略使之产生集群协同效应,从而具备执行复杂多变、危险任务的能力。目前无…

【C++】AVLTree——高度平衡二叉搜索树

文章目录一、AVL树的概念二、AVL树节点的定义三、AVL树的插入四、AVL树的旋转1.左单旋2.右单旋3.左右双旋4.右左双旋五、进行验证六、AVLTree的性能个人简介📝 🏆2022年度博客之星Top18;🏆2022社区之星Top2;的🥇C/C领域优质创作者…

JVM类加载子系统

1、类加载子系统在内存结构中所处的位置通过内存结构图,我们先知道类加载子系统所处的位置,做到心中有图。2、类加载器作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责cla…

anaconda创建环境为空、修改默认环境位置

无论是用navigator还是命令行创建环境都无法指定python版本conda create -n test python3.9其实就是没有路径,添加几个镜像就好:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels ht…

BUUCTF-[安洵杯 2019]crackMe1

题目下载:下载 这道题涉及到SM4加密和变表base64。 SM4简单了解:SM4算法过程_不是小白才怪的博客-CSDN博客_sm4算法 先运行一下程序, 发现有一个Messagebox,并且内容是hooked。 载入IDA,使用IDA的插件Findcrypt查…

ChatGPT:“抢走你工作的不会是 AI ,而是先掌握 AI 能力的人”

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! ChatGPT:“抢走你工作的不会是 AI ,而是先掌握 AI 能力的人” ChatGPT:美国OpenAI 研发的聊天机器人程序,人工智能技术…

Springboot启动过程分析

Springboot启动过程分析 SpringBoot的版本是v3.0.2,下面进行详细的分析。 一、SpringBoot启动流程的主干 示例程序入口如下所示: import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApp…

【网络知识】TCP和UDP详解

TCP和UDP 文章目录UDP协议概述TCP协议概述TCP报文段TCP连接的建立两天内完成下面的参考博客😊点此到文末惊喜↩︎ UDP协议 概述 TCP协议 概述 定义 传输控制协议(TCP,Transmission Control Protocol)是一种传输层通信协议&…

Python 之 Pandas DataFrame 数据类型的简介、创建的列操作

文章目录一、DataFrame 结构简介二、DataFrame 对象创建1. 使用普通列表创建2. 使用嵌套列表创建3 指定数值元素的数据类型为 float4. 字典嵌套列表创建5. 添加自定义的行标签6. 列表嵌套字典创建 DataFrame 对象7. Series 创建 DataFrame 对象三、DataFrame 列操作1. 选取数据…