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

article/2025/9/25 22:06:40

写在前面

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.gztar -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;# 虚拟主机 vhostserver {listen       80;server_name  localhost; # 域名或者主机名location / {root   html;index  index.html index.htm;}#如果服务端发生错误,会显示50x.html#http://www.baidu.com/50x.htmlerror_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
在这里插入图片描述

推荐一个零声学院免费教程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:


http://chatgpt.dhexx.cn/article/HRfJfZm0.shtml

相关文章

3-1 Nginx编译安装

文章目录 Nginx服务一、Nginx服务基础1、Nginx简介2、简述Nginx和Apache的差异3、编译安装Nginx服务(Nginx-1.12.2)1)环境准备:关闭防火墙,上传软件包2)安装依赖环境3)创建运行用户、组4&#x…

Nginx编译安装与配置

目录 引言 一、Nignx简介 二、简述Nginx和Apache的差异 三、编译安装Nginx服务 四、新版本升级 五、添加 Nginx 系统服务 六、基于域名的 Nginx 虚拟主机 七、基于IP 的 Nginx 虚拟主机 八、基于端口的 Nginx 虚拟主机 九、Nginx服务的主配置文件 (1&am…

Nginx编译安装

1. 停止原有的web服务器:端口默认均是80 2. 添加普通用户账号运行nginx useradd -M -s /sbin/nologin nginx3. 解压并安装nginx tar xf nginx-1.8.1.tar.gzcd ngxin-1.8.1/./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_stub_stat…

Nginx网站服务

文章目录 一.编译安装Nginx服务(一)认识Nginx服务的主配置文件(二)日志格式设定(三)访问状态统计配置(四)基于授权的访问控制(五)基于客户端的访问控制 二.域名主机的访问(一)基于域名的Nginx虚拟主机(二)基于IP的Nginx虚拟主机(三…

Nginx的安装---编译安装

编译安装 1、安装编译环境 yum -y install gcc gcc-c make ncurses ncurses-devel2、安装pcre软件包(使nginx支持http rewrite模块) yum install -y pcre pcre-devel3、安装openssl-devel(使nginx支持ssl) yum install -y ope…

2021年计算机保研面试题

准备计算机保研面试题 注意点 大家都是第一次~~~ 没有保研经验,所以担心会被问专业课知识相关的东西。但是结合博主自己的经历,本人双非保到某985,过程中问的最多的是项目相关问题,并不会设计太多专业课问题,问的话也…

linux 网络 sk_buff结构

一、简介 sk_buff的意思是socket buffer&#xff0c;这是Linux网络子系统中的核心数据结构。 定义在 <include/linux/skbuff.h> 中&#xff0c;它由许多变量组成&#xff0c;目标就是满足所有网络协议的需要。 sk_buff 在不同的网络层被使用&#xff08;MAC 或其他在 L…

梳理50道经典计算机网络面试题

我梳理了50道计算机网络面试题&#xff0c;每一道题目都特别经典&#xff0c;大厂也非常喜欢问。相信大家看完&#xff0c;会有新的收获滴~ 1. 说说HTTP常用的状态码及其含义&#xff1f; 思路: 这道面试题主要考察候选人&#xff0c;是否掌握HTTP状态码这个基础知识点。 不管是…

24 张图总结 TCP 基础知识,看完我飘了。

TCP 是一种面向连接的单播协议&#xff0c;在 TCP 中&#xff0c;并不存在多播、广播的这种行为&#xff0c;因为 TCP 报文段中能明确发送方和接受方的 IP 地址。 在发送数据前&#xff0c;相互通信的双方&#xff08;即发送方和接受方&#xff09;需要建立一条连接&#xff0…

【随机过程】19 - 随机过程的线性预测问题

随机过程的线性预测问题 文章目录 随机过程的线性预测问题1. 随机过程的估计问题概述1.1 预测问题1.2 内插问题1.3 滤波问题 2. 随机过程的可预测性2.1 新息过程2.1.1 信息过程的定义2.1.2 估计的子空间分解2.1.3 新息过程的性质 2.2 随机过程的正则性与奇异性2.2.1 正则性和奇…

计算机网络传输层测试

一 单项选择题 1.下列选项中&#xff0c;&#xff08; D &#xff09;是用于传输层寻址的。 A.MAC地址 B.IPv4地址 C.IPv6地址 D.端口 解析&#xff1a;传输层对主机上的不同网络进程进行了编号&#xff0c;用不同的数字区分不同的网络进程。传输层标识网络进程的数字称为传…

上岸阿里了

大家好&#xff0c;我是老王&#xff0c;收到来自近期成功上岸的粉丝分享的阿里面试真题&#xff0c;分享给大家参考下&#xff0c;希望大家看完成功面试上大厂Offer。 01.薪资体系 新技术用到的也很多&#xff0c;也是很多人想要进入的大厂备选之一。 阿里的薪资结构&#xf…

2W字!梳理50道经典计算机网络面试题(收藏版)

1. 说说HTTP常用的状态码及其含义&#xff1f; 思路: 这道面试题主要考察候选人&#xff0c;是否掌握HTTP状态码这个基础知识点。 不管是不是面试需要&#xff0c;我们都要知道&#xff0c;日常开发中的这几个状态码的含义哈&#xff1a; 2. HTTP 常用的请求方式&#xff0c;区…

Netty 单机百万连接测试

1.Netty框架简介 1.1.Netty简介 netty是jboss提供的一个java开源框架&#xff0c;netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可用性的网络服务器和客户端程序。也就是说netty是一个基于nio的编程框架&#xff0c;使用netty可以快…

LPCNET: 通过线性预测改进神经语音合成

LPCNET: 通过线性预测改进神经语音合成 摘要索引词 -- 神经音频合成 参数编码 WaveRNN 1.导言2.WAVERNN3.LPCNET3.1条件参数3.2 预加重和量化3.3 线性预测3.4 输出层3.5 稀疏矩阵3.6 嵌入和代数简化3.7 从概率分布中抽取样本3.8 训练噪声注入 4. 评估4.1 复杂度4.2 实验设置4.3…

TCP拥塞机制学习

TCP拥塞机制学习 写在前面 很早就想总结一下tcp方面的知识了&#xff0c;心动不如行动&#xff0c;这一块面试重点&#xff0c;而其也是coder的必修课。 一、TCP头部报文格式 了解任何一个协议都要从它的协议报文开始&#xff0c;我们先看一下他的格式和一些基本概念。 TC…

3 万字 + 100 张图带你彻底搞懂 TCP 面试题(强烈建议收藏)

大家好&#xff0c;我是小林&#xff0c;一个专为大家图解的工具人。 不管面试 Java 、C/C、Python 等开发岗位&#xff0c; TCP 的知识点可以说是必问的了。 任 TCP 虐我千百遍&#xff0c;我仍待 TCP 如初恋。 过去不会没关系&#xff0c;今天就让我们来消除这份恐惧&…

计算机网络常见知识点总结

网络 1.IP地址分类 网络为全为1的是广播地址&#xff0c;所以要减一&#xff0c;因此127减一为126 A类IP地址 地址范围1.0.0.0到127.255.255.255。可用的A类网络有126个 B类IP地址地址范围128.0.0.0到191.255.255.255。可用的B类网络有16382个 C类IP地址范围从192.0.0.0到223.…

手撸架构,网络 面试36问

TCP 链接 三次握手&#xff1a; 首先服务器端处于LISTEN状态。当客户端想要建立连接时&#xff0c;他将发送一个SYN包&#xff0c;序列号假如为u。客户端进入SYN_SENT状态。当服务器端收到了这个SYN包&#xff0c;如果服务器同意建立连接&#xff0c;他将发送一个SYN&#xf…

Java面试必背八股文[11]:计算机网络

OSI与TCP/IP各层的结构&#xff1f; 答:OSI分层 &#xff08;7层&#xff09;&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层&#xff08;4层&#xff09;&#xff1a;网络接口层、 网际层、运输层、 应用层。 五层协议 &#xff08;…