Nginx编译安装及配置文件详解

news2024/12/27 18:09:39

写在前面

Centos版本:Centos 7.6 - 64bit
Nginx版本:1.20.2

一、什么是Nginx

Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

二、Nginx用在哪些地方

2.1 静态资源服务

动静分离:为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。本质上是通过本地文件系统来提供服务;

在这里插入图片描述
一般来说,都需要将动态资源和静态资源分开,由于 Nginx 的高并发和静态资源缓存等特性,经常将静态资源部署在 Nginx 上。如果请求的是静态资源,直接到静态资源目录获取资源,如果是动态资源的请求,则利用反向代理的原理,把请求转发给对应后台应用去处理,从而实现动静分离。
使用前后端分离后,可以很大程度提升静态资源的访问速度,即使动态服务不可用,静态资源的访问也不会受到影响。

2.2 正向代理和反向代理(负载均衡)

正向代理

正向代理就是客户端将自己的请求先发给代理服务器,通过代理服务器将请求转发给服务器。我们常用的VPN就是一种代理服务器。比如:你想要访问国外的某个网站,你的客户端就需要连接上一个可以连访问外网的服务器。正向代理代理的是客户端。

反向代理

反向代理,反向代理代理的是服务器。在有多个服务器的情况下,为了能让客户端访问到的ip地址都为同一个网站,就需要使用反向代理。比如:一开始单台机器可以对外提供服务,在用户请求暴增的情况下,就需要多个机器对外提供相同的服务,此时就需要使用nginx作为反向代理,用户只需要访问特定的服务器,nginx会自动根据各个机器的负载情况,将请求转发到不同的机器。

2.3 负载均衡策略

  • 轮询:按照顺序将请求转发到后台机器
  • 加权轮询:根据机器性能的不同,为每个机器设置不同的权重。比如:可以为内存大、性能强劲的机器分配较大的权重,使其处理更多的请求。
  • ip hash绑定服务器:对客户端ip进行hash操作,并对机器个数取余,使其分配到固定的机器。缺点:不易于水平扩展。
  • 一致性哈希:水平扩展友好

三、Nginx安装

3.1 安装编译环境及第三方依赖

Nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件包的开发包,以便提供相应的库和头文件。

yum install gcc-c++ // 安装编译环境
yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel  

3.2 下载nginx安装包

wget http://nginx.org/download/nginx-1.20.0.tar.gz

tar -zxvf nginx-1.20.0.tar.gz  // 解压

cd nginx-1.20.0     // 进入解压目录

./configure  --prefix=/usr/local/nginx // --prefix 指定安装目录,可以不写
make
sudo make install

3.3 Nginx安装默认目录

在这里插入图片描述
其中sbin下就是nginx的可执行程序。logs目录下是日志:包括Nginx访问日志和错误日志,及Nginx运行时的主进程的的进程号会保存在mginx.pid文件中。
在这里插入图片描述

html目录下是静态网页:
在这里插入图片描述

conf目录下是nginx的核心配置,主要关注 nginx.conf即可。Nginx最小的配置如下:

# 配置用户及用户组
user  root;
#启动多少个子进程(worker),通常设置成和cpu的数量相等
worker_processes  1;  

events {
    worker_connections  1024;
}

http {
    include       mime.types;  #告诉浏览器以什么格式去接收和解析文件
    default_type  application/octet-stream;
    
    sendfile        on;  #开启零拷贝
    
	keepalive_timeout 65;
	
	# 虚拟主机 vhost
    server {
        listen       80;
        server_name  localhost; # 域名或者主机名

        location / {
            root   html;
			index  index.html index.htm;
        }
		#如果服务端发生错误,会显示50x.html
		#http://www.baidu.com/50x.html
        error_page   500 502 503 504  /50x.html;
        # 去html目录下找 50x.html,html是相对路径,可以修改
        location = /50x.html {
            root   html;
        }

    }
}
3.3.1 启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

在这里插入图片描述##### 3.3.2 停止nginx

/usr/local/nginx/sbin/nginx -s stop
3.3.3 重新加载nginx
/usr/local/nginx/sbin/nginx -s reload
3.3.4 配置文件分析

全局模块

配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

user  nobody;  				#配置用户或者组,默认为nobody
worker_processes  1; 	 		#允许生成的进程数,默认为1
error_log  logs/error.log;		#制定日志路径,级别。这个设置可以放入全局块,
			#http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
pid        logs/nginx.pid;    #指定nginx进程运行文件存放地址

events块配置

events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

设置网络连接的序列化

Nginx是多进程的,当某一时刻只有一个网络连接达到时,多个睡眠的进程会被同时叫醒(这种现象叫“惊群”),但是只有一个进程可以获得连接。如果每次唤醒的进程数太多,会影响系统的性能。为了解决这一问题,Nginx配置中有一条指令accpet_mutex,当其设置为开启的时候,将会对多个Nginx的进程接收连接进行序列化,防止多个进程对连接的争抢。语法为:

accept_mutex on | off;  // #设置网路连接序列化,防止惊群现象发生,默认为on

设置是否允许同时接收多个连接

每个Nginx服务器的worker_process 都有能力同时接收多个新到达的连接,但是这需要在配置文件中进行设置,语法为:

multi_accept on | off;  // 默认为off,关闭  即每个worker一次只能接收一个新到达的网络连接,并且只能在events块中进行配置

事件驱动模型的选择

Nginx提供了多种事件驱动模型来处理网络消息,语法为:

use method; // method可以为:select poll epoll kqueue等等

定义MIME_Type

在浏览器中,可以显示html、XML、GIF等多种类型的文本、媒体等资源,浏览器为了区分这些资源,需要使用MIME Type。

在这里插入图片描述
我们可以看到再http全局块中如上配置,inclue 表示从外部引用了 mime.types 文件。这个文件在 /etc/mime.types
在这里插入图片描述

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

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

相关文章

mkv视频文件怎么转成mp4,这3个方法很好用

对于那些电脑不是很精通的小伙伴来说, mkv视频文件怎么转成mp4?小编先来介绍一下mkv视频格式,mkv是一种开放标准的自由的容器和文件格式,是一种多媒体封装格式,能够在一个文件中容纳无限数量的视频、音频、图片或字幕轨…

MVCC底层原理

目录说明MVCC的底层原理隐藏字段undo logRead View说明 在被面试官问面试题的时候,首先它问了Mysql的事务的隔离级别有几种?默认是哪种?他们分别解决了什么问题? 我在一顿回答“巴巴巴巴。。。。”之后,它又继续问题…

追踪项目进展常用的衡量方法

作为项目管理活动,项目中的进度跟踪可以帮助你了解项目实时的完成状态。有了正确的方法、项目管理工具和指标,项目跟踪可以指导你的团队的行动,甚至在问题出现之前向你发出预警。 项目经理使用各种方法、工具和指标来跟踪进度。其中最常见的…

自然语言处理(Natural Language Processing,NLP)简要

自然语言处理(Natural Language Processing,NLP)简要一、发展状况二、发展优势三、发展瓶颈四、具体研究方向五、自然语言处理工具六、未来发展方向自然语言处理(Natural Language Processing,NLP)是计算机…

(原创)Flutter基础入门:各种常用容器类组件

前言 上篇博客主要讲了Flutter的Shape实现 Flutter基础入门:实现各种Shape效果 今天主要讲下Flutter中常用的一些容器组件 Flutter中组件数量很多,分类方式也各有不同 比如可以分为有态组价和无态组件 又可以分为容器组件、功能组件等 拿功能组件来说 有…

docker网络详解,自定义docker网络

文章目录一、初识docker网络1、docker0虚拟网桥2、docker网络常用基本命令3、docker网络可以解决的问题二、docker网络模式1、四种网络模式2、容器实例内默认网络IP生产规则3、bridge模式4、host模式5、none模式6、container模式五、自定义网络模式1、过时的docker link2、使用…

【英语】大学英语CET考试,词汇语法导学方法论笔记(50h+)

文章目录1、谭剑波-词汇直播课1-2(词汇学习3个关键)1.1 看不懂句子的原因(词汇的重要性)1.2 记不住单词的原因(死记硬背70%)1.3 理解单词的本质(词根词缀,26字母,联想辅助…

D3D11和D3D12共享资源

最近碰到个伪需求: 游戏串流。 游戏引擎用D3D12渲染, 再把游戏画面做视频编码, 通过网络发送到远端做解码显示。 第一反应就是走全GPU的流程, 不要用CPU把显存里的数据拷来拷去。 所以先获取渲染完的D3D12的frame buffer, 然后送给…

进程管理 - 银行家算法

文章目录1 概述2 银行家算法2.1 原理2.2 例题1 概述 #mermaid-svg-7QKAqjQpckpStO9Q {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7QKAqjQpckpStO9Q .error-icon{fill:#552222;}#mermaid-svg-7QKAqjQpckpStO9Q .e…

android framework-PackageManagerService(PKMS)包管理服务

一、概述 Android系统启动过程中,会启动一个包管理服务PackageManagerService(PKMS),这个服务主要负责扫描系统中指定目录,找出里面以apk结尾的文件,通过对这些文件进行解析,得到应用程序的所有信息并完成应用程序的安…

算法学习day59

算法学习day591.力扣503.下一个更大元素II1.1 题目描述1.2 分析1.3代码2.力扣42. 接雨水2.1 题目描述2.2 分析2.3 代码3.参考资料1.力扣503.下一个更大元素II 1.1 题目描述 题目描述: 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素&a…

【大数据Hadoop】HDFS3.3.1-Namenode-租约管理

租约管理前言LeaseManager.LeaseLeaseManager添加租约 - addLease租约检查 - FsNamesystem.checkLease租约更新 - renewLease删除租约 - removeLease租约检查 - Monitor 线程租约恢复 - Monitor 线程发起租约恢复 - 其他方式发起前言 我们知道 HDFS 文件是 write-once-read-man…

CloudCompare插件开发之点云如何创建、保存并显示?

文章目录0.引言1.创建插件工程2.代码编写3.显示点云4.保存点云0.引言 CloudCompaer是一款优秀的开源软件,在点云处理时可以根据实际要求开发合适的插件,在实际使用中,创建点云、保存点云、显示点云的操作较为基础,为了使这些操作得…

施工组织设计合集

34-6 施工组织设计02017-年亲曼旗大镇市政道路及广场公园园林绿化工程(第一.A1-1五中教学楼施工组织设计A2施工组织设计(方案) 报审表hasuploaded-中建施|组织设计 (22P)安徽大包庄125万吨疏铁矿斜坡道施工组织设计 (修改)宝山万科四季花城施T组织设计 (126P)对税信息培训中心装…

软件测试,月薪还没过万的进来看

目录 前言 一、技能提升 二、多语言掌握 三、团队协作 四、持续学习 五、提高测试效率 六、质量保障 七、职业发展 八、总结 前言 在当今IT行业中,软件测试是一个不可或缺的环节。随着互联网和移动应用的发展,对软件质量的要求也越来越高。因此…

前后端分离架构

前后端分离架构介绍 前后端分离已成为互联网项目开发的业界标准使用方式,将前端和后端的开发进行解耦。并且前后端分离会为以后的大型分布式架构、微服务架构、多端化服务(各种客户端,比如浏览器、车载终端、安卓、IOS等)打下坚实…

[Netty] FastThreadLocal (十四)

文章目录1.FastThreadLocal介绍2.FastThreadLocal分析3.FastThreadLocal结构分析4.FastThreadLocal方法分析4.1 FastThreadLocal.get()4.2 FastThreadLocal.set()1.FastThreadLocal介绍 FastThreadLocal是Netty中常用的一个工具类, FastThreadLocal所使用的InternalThreadLoca…

[架构之路-159]-《软考-系统分析师》-10-系统分析-6-现有业务流程分析, 系统分析最核心的任务

目录 第 10章 现有系统 分 析 1 0 . 6 现有业务流程分析 10.6.1 业务流程分析槪述 1 . 业务流程分析的步骤 2 . 业务流程分析的方法 10.6.2 业务-流程图TFD 1. T F D 的基本符号 2. TFD的绘制 10.6.3 业务 - 活动图 10.6.4 业务流程建模BPM 1. B P M 概述 2 . 标杆…

Pytest自动化测试框架一些常见的插件

Pytest拥有丰富的插件架构,超过800个以上的外部插件和活跃的社区,在PyPI项目中以“ pytest- *”为标识。 本篇将列举github标星超过两百的一些插件进行实战演示。 插件库地址:http://plugincompat.herokuapp.com/ 1、pytest-html&#xff1…

python机器学习决策树和SVM向量机算法实现红酒分类

1、红酒数据介绍 经典的红酒分类数据集是指UCI机器学习库中的Wine数据集。该数据集包含178个样本,每个样本有13个特征,可以用于分类任务。 具体每个字段的含义如下: alcohol:酒精含量百分比 malic_acid:苹果酸含量&a…