Linux系统安装Nginx

一、Nginx的简介

        Nginx是一个高性能的HTTP和反向代理web服务器,是由伊戈尔·赛索耶夫为俄罗斯访问量第二站点开发的,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名,第一个公开版本0.1.0发布于2004年10月4日。

        Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件代理服务器,其特点是占有内存少,并发能力强,事实上Nginx的并发能力在同类型的网页服务器中表现较好,

        中国大陆使用Nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

        Nginx是由C语言开发,专为性能优化而开发,性能是最重要的考量,实现上非常注重效率,能经受高负载的考验,官方数据测试表明能够支持高达50000个并发连接数的响应。

Nginx是什么?Nginx介绍及Nginx的优点 - LNMP一键安装包

二、Nginx的作用

2.1、正向代理

        如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。 正向代理(VPN,玩游戏使用)代理的是客户端。

2.2、反向代理 

        反向代理代理的是服务器端,比如咱们在客户端浏览器里访问的百度,客户端发出请求后,由一台nginx服务器接收到请求后,从后台调取一台服务器给咱们提供接收请求,进行响应的过程。在这个过程中这个Nginx服务器就是百度众多服务器的代理。

2.3、负载均衡

        客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。

        这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成服务器响应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情况呢?

        我们首先想到的可能是升级服务器的配置,比如提高CPU的执行频率,加大内存等提高机器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能满足日益提升的需求了,最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不可能满足需求的,那么怎么办呢?

12306 官网 阿里

        上面的分析我们去掉了增加物理服务器来解决问题的办法,也就是说纵向解决问题的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为分发到多个服务器上,将负载分发到不同的服务器,这种方式也就是我们所说的负载均衡。

 

 Nginx提供的负载均衡策略有2种,内置策略和扩展策略。内置策略为轮询,加权轮询,IPhash(固定的IP只能访问到固定的服务器,保证session不会丢失的一种方案。)

2.4、动静分离

        在我们的软件开发中,有些请求是需要后台处理的,有些请求不需要经过后台处理,比如:css,js,html,jpg等文件,这些不需要后台处理的文件叫做静态文件。让动态网站里的动态网页根据一定的规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,提高资源响应的速度。通过使用Nginx大大提高了我们网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼!

 

 三、Windows下安装Nginx

官网:nginx: downloadicon-default.png?t=N7T8http://nginx.org/en/download.html

下载nginx/Windows-1.20.1 稳定版。

服务启动后,访问80端口就会被nginx拦截。

四、Linux下安装Nginx步骤

 1 、下载nginx压缩版

官网:nginx: download

下载nginx-1.20.1.tar.gz 稳定版

2、 上传到linux服务器

上传到了usr目录下

3、 安装gcc

安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,则需要安装:

yum install gcc-c++
4、 查看版本
gcc -v
5、安装pcre-devel依赖库

pcre是一个perl库,ngix的http模块使用pcre来解析正则表达式,所以要在linux上安装pcre.。pcre-devel是使用的pcre开发的一个二次开发库,nginx也需要此库,命令:

yum -y install pcre-devel
6、安装openssl依赖库

openssl是一个强大的安全套接字层密码库,囊括主要的密码算法,常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要安装openssl库,命令:

yum -y install openssl openssl-devel
7、解压缩

解压目录是在 /usr/nginx-1.20.1

tar -zxvf nginx-1.20.1.tar.gz
8、进入目录
cd nginx-1.20.1
9、执行自动配置
./configure
10、执行make命令

把文件进行编译

make
11、执行make install

再执行安装

make install
12、查看安装的路径(是否成功)

nginx的默认安装目录: /usr/local/nginx

whereis nginx
13、进入安装目录
cd /usr/local/nginx/bin
ll
14、查看nginx的配置文件
cd /usr/local/nginx
ll
cd conf
ll
cat nginx.conf
15、执行nginx的启动文件
# 进入安装目录
cd /usr/local/nginx/sbin
#启动Nginx服务
./nginx
16、查看nginx进程
ps -ef | grep nginx
17、输入IP地址进行访问

http://101.200.174.107,如果访问不到Nginx服务,则需要在防火墙中进行端口得开放操作

18、防火墙的设置

需要记忆:

#查看防火墙的启动状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
#开启防火墙
systemctl start firewalld
#查看开放的端口号
firewall-cmd --list-all
#在防火墙中设置开放的端口号
firewall-cmd --zone=public --add-port=80/tcp --permanent
#开启端口后,需要重启防火墙才生效
systemctl restart firewalld | firewall-cmd --reload 
# 如果有不用的端口,则进行移除
firewall-cmd --permanent --remove-port=8081/tcp

Nginx常用命令

# 进入nginx的目录
cd /usr/local/nginx/sbin
# 查看Nginx的版本
./nginx -v
# 启动Nginx
./nginx  
# 停止Nginx
./nginx -s stop 
# 安全退出Nginx,同时会关闭Nginx服务
./nginx -s quit 
# 重新加载配置文件(不重新启动Nginx,也会生效)
./nginx -s reload 
# 查看Nginx的进程
ps -ef | grep nginx 

四、Nginx配置文件的组成

进入Nginx配置文件的位置

cd /usr/local/nginx
ll
cd conf
ll

就可以看到nginx.conf文件,此文件就是Nginx的配置文件,通过 vim nginx.conf命令,打开配置文件

Nginx配置文件有三部分组成:全局块、events块、http块

第一部分:全局块

从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包含配置运行Nginx服务器的用户(组),允许生成的worker、process数,进程PID存放路径,日志存放路径和类型以及配置文件的引入等。

比如上面第一行配置的

worker_processes  1;

前面带#号的都是注释部分。

worker_processes这是Nginx服务器并发处理服务的关键配置,worker_processes值越大,可以支持的并发处理量也越多,但是会受到硬件,软件等设备的制约

查看CPU个数:

cat /proc/cpuinfo | grep "cores"|uniq
worker_processes,工作进程数
  • 1.默认:worker_processes: 1

  • 2.调大:worker_processes: CPU核心数,(双核4线程,可以设置为4)

第二部分:events块

比如下面的配置:

events {worker_connections  100000;
}

worker_processes与worker_connections 设置好合适大小,可以提升nginx处理性能,非常重要。

events块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启对多worker_processes 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动来处理连接请求,每个worker_processes 可以同时支持的最大连接数等

上述例子就表示每个worker_processes 支持的最大连接数为1024

这部分的配置对Nginx的性能影响较大,在实际中应该灵活配置

worker_connections,单个工作进程可以允许同时建立外部连接的数量

数字越大,能同时处理的连接越多

  • 1.默认:worker_connections: 1024

  • 2.调大:worker_connections: 100000,(调大到10万连接)

第三部分:http块

这算是Nginx服务器配置中最频繁的部分,代理,缓存和日志定义等绝大多数功能和第三方模块的配置都在这里,需要注意的是:http块也可以包括http全局块,server块。

http全局块:

http全局块配置的指令包括文件的引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求数上限等。

server块:

这块和虚拟主机有密切关系,虚拟主机从用户角度看和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机

而每个server块也可分为全局server块,以及可以同时包含多个location块。

全局server块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。

location块

一个server块可以配置多个location块

这块的主要作用是基于Nginx服务器接收到的请求字符串,对虚拟主机名称之外的字符串进行匹配,对特定的请求进行处理。地址定向,数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

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

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

相关文章

C# RichTextBox常用属性、方法学习1

1 字体 Font font1 new Font("宋体", 18); richTextBox1.Font font1; Font font2 new Font("宋体", 10, FontStyle.Underline); richTextBox1.SelectionFont font2; 定义字体,可以带2个参数&#…

LeetCode---122双周赛

题目列表 3010. 将数组分成最小总代价的子数组 I 3011. 判断一个数组是否可以变为有序 3012. 通过操作使数组长度最小 3013. 将数组分成最小总代价的子数组 II 一、将数组分成最小总代价的子数组I 这道题纯纯阅读理解题,关键在于理解题意。注意:第一…

总体方差与样本方差的区别是什么?

总体方差和样本方差是统计学中两个重要概念,它们在定义和计算上有所不同,主要区别体现在数据集的性质和计算公式的分母上: 1. 总体方差(Population Variance): 定义: 总体方差是指将一个完整数…

嵌入式——窗口看门狗(WWDG)补充

目录 一、独立看门狗与窗口看门狗 1.功能描述 2.两者区别 二、WWDG功能描述 1.窗口看门狗时钟 2.计数器时钟 3. 计数器 4.窗口值 三、WWDG超时时间 一、独立看门狗与窗口看门狗 1.功能描述 STM32有两个看门狗:一个是独立看门狗(IWDG&#xff0…

数据结构三:线性表之单链表(带头结点单向)的设计与实现

线性表的链式存储结构正是所谓的单链表,何谓单链表?通过地址将每一个数据元素串起来,进行使用,这可以弥补顺序表在进行任意位置的插入和删除需要进行大量的数据元素移动的缺点,只需要修改指针的指向即可;单…

网络编程套接字(2)

UDP数据报套接字编程 API介绍 DatagramSocket DatagramSocket是UDP的Socket,用于发送和接收数据报. 操作系统中有一类文件,就叫做socket文件(普通文件/目录文件:在硬盘上的) socket文件:抽象的表示了网卡这样的硬件设备 DatagramSocket就是对socket文件进行读写,也就是借助网…

对于gzip的了解

gzip基本操作原理:通过消除文件中的冗余信息,使用哈夫曼编码等算法,将文件体积压缩到最小。这种数据压缩方式在网络传输中发挥了巨大作用,减小了传输数据的大小,从而提高了网页加载速度。 静态资源 Vue Vue CLl修改v…

WordPress如何使用SQL实现一键关闭/开启评论功能(已有评论)

WordPress本人就自带评论功能,不过由于种种原因,有些站长不想开启评论功能,那么应该怎么实现一键关闭评论功能或开启评论功能呢?或者针对已有评论功能的文章进行一键关闭或开启评论功能应该怎么操作? 如果你使用的Wor…

【.NET Core】深入理解C#中的特殊字符

【.NET Core】深入理解C#中的特殊字符 文章目录 【.NET Core】深入理解C#中的特殊字符一、概述二、$-- 字符串内插2.1 内插字符串的结构2.2 内插原始字符串字面量2.3 特殊字符2.4 内插字符串编译 三、-- 逐字字符串标识符四、“”“--原始字符串文本 一、概述 特殊字符是预定义…

OpenGL/C++_学习笔记(四)空间概念与摄像头

汇总页 上一篇: OpenGL/C_学习笔记(三) 绘制第一个图形 OpenGL/C_学习笔记(四)空间概念与摄像头 空间概念与摄像头前置科技树: 线性代数空间概念流程简述各空间相关概念详述 空间概念与摄像头 前置科技树: 线性代数 矩阵/向量定…

RPC教程 5.支持HTTP协议

1.HTTP的CONNECT方法 Web 开发中,我们经常使用 HTTP 协议中的 HEAD、GET、POST 等方式发送请求,等待响应。但 RPC 的消息格式与标准的 HTTP 协议并不兼容,在这种情况下,就需要一个协议的转换过程。HTTP 协议的 CONNECT 方法提供了…

MybatisPlus二级映射和关联对象ResultMap

文章目录 一、业务背景1. 数据库表结构2. 需求 二、使用映射直接得到指定结构三、其他文件1. Mapper2. Service3. Controller 四、概念理解一级映射二级映射聚合 五、标签使用1. \<collection\> 标签2. \<association\> 标签 在我们的教程中&#xff0c;我们设计了…

flask框架制作前端网页作为GUI

一、语法和原理 &#xff08;一&#xff09;、文件目录结构 需要注意的问题&#xff1a;启动文件命名必须是app.py。 一个典型的Flask应用通常包含以下几个基本文件和文件夹&#xff1a; app.py&#xff1a;应用的入口文件&#xff0c;包含了应用的初始化和配置。 requirem…

【DeepLearning-8】MobileViT模块配置

完整代码&#xff1a; import torch import torch.nn as nn from einops import rearrange def conv_1x1_bn(inp, oup):return nn.Sequential(nn.Conv2d(inp, oup, 1, 1, 0, biasFalse),nn.BatchNorm2d(oup),nn.SiLU()) def conv_nxn_bn(inp, oup, kernal_size3, stride1):re…

Java基础知识-异常

资料来自黑马程序员 异常 异常&#xff0c;就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是&#xff1a; 异常 &#xff1a;指的是程序在执行过程中&#xff0c;出现的非正常的情况&#xff0c;…

深入理解HarmonyOS UIAbility:生命周期、WindowStage与启动模式探析

UIAbility组件概述 UIAbility组件是HarmonyOS中一种包含UI界面的应用组件&#xff0c;主要用于与用户进行交互。每个UIAbility组件实例对应最近任务列表中的一个任务&#xff0c;可以包含多个页面来实现不同功能模块。 声明配置 为了使用UIAbility&#xff0c;首先需要在mod…

跟着cherno手搓游戏引擎【10】使用glm窗口特性

修改ImGui层架构&#xff1a; 创建&#xff1a; ImGuiBuild.cpp&#xff1a;引入ImGui #include"ytpch.h" #define IMGUI_IMPL_OPENGL_LOADER_GLAD//opengl的头文件需要的定义&#xff0c;说明使用的是gald #include "backends/imgui_impl_opengl3.cpp" …

03_Opencv简单实例演示效果和基本介绍

视频处理 视频分解图片 在后面我们要学习的机器学习中,我们需要大量的图片训练样本,这些图片训练样本如果我们全都使用相机拍照的方式去获取的话,工作量会非常巨大, 通常的做法是我们通过录制视频,然后提取视频中的每一帧即可! 接下来,我们就来学习如何从视频中获取信息 ubun…

c#之构值类型和引用类型

值类型:(整数/bool/struct/char/小数) 引用类型:(string/ 数组 / 自定义的类 / 内置的类) 值类型只需要一段单独的内存,用于存储实际的数据 引用类型需要两段内存(第一段存储实际的数据,他总是位于 堆中第二段是一个引用,指向数据在堆中的存放位置) 当使用引用类型赋值的时…

C++:类 的简单介绍(一)

目录 类的引用&#xff1a; 类的定义&#xff1a; 类的两种定义方式&#xff1a; 成员变量命名规则的建议&#xff1a; 类的访问限定符及封装&#xff1a; 访问限定符 【访问限定符说明】 封装 class与struct的区别&#xff1a; 类的作用域&#xff1a; 类的实例化…