一篇文章带你了解轻量级Web服务器——Nginx简单入门
一篇文章带你了解轻量级Web服务器——Nginx简单入门
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件代理服务器
在本篇中我们会简单介绍Nginx的特点,安装,相关指令使用以及配置信息和具体应用等
本篇内容属于《瑞吉外卖》的知识科普部分,有兴趣可以查看一下《瑞吉外卖》的相关文章内容
Nginx概述
我们先来对Nginx做一个的简单的了解
Nginx介绍
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件代理服务器
本身具有占用内存少,并发能力强等特点,其并发能力在同类型的网页服务器中表现较好,包括百度,京东等众多服务器都是采用Nginx
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。
下面附上官方:nginx news
Nginx下载与安装
我们的Nginx通常使用在Linux服务器系统上,我们这里使用虚拟机来进行操作:
- 安装依赖包
# 我们首先来下载一些关于Nginx安装的依赖包
yum -y install gcc pcre-devel zlib-devel openssl oepnssl-devel
- 下载Nginx安装包
# 我们借助wget网上下载插件来实现
yum install wget
# 我们使用wget下载安装包
wget https://nginx.org/download/nginx-1.16.1.tar.gz
- 解压安装包
# 解压安装包在当前文件夹root
tar -zxvf nginx-1.16.1.tar.gz
- 跳转页面,进入内部
# 跳转页面
cd nginx-1.16.1
- 安装Nginx在usr目录下
# 创建文件夹
mkdir /usr/local/nginx
# 安装
./configure --prefix=/usr/local/nginx
- 安装
# 安装
make && make install
至此我们的Nginx安装完成
Nginx目录介绍
在安装完Nginx后,我们可以到相应文件下查看,可以看到主要分为四个文件包:
- conf:存放配置文件
- html:存放静态资源
- logs:存放日志信息
- sbin:存放二进制文件
其中我们主要使用的两个文件是:
- conf/nginx.conf:用于修改nginx配置信息
- sbin/nginx:用于启动停止nginx服务
这里我们介绍一个Linux插件,可以详细查看该目录下所有的文件内容:
# Tree插件(需要先下载yum install tree)
tree
我们可以看到其文件逻辑结构:

Nginx命令
下面我们将着重介绍几个Nginx常用命令
Nginx查看版本号
首先我们需要来到sbin目录下:
# 跳转页面
cd /usr/local/nignx/sbin
我们使用查看命令:
# 查看版本号
./nginx -v
Nginx检查正确性
首先我们需要来到sbin目录下:
# 跳转页面
cd /usr/local/nignx/sbin
我们使用检查命令:
# 检查版本以及配置信息
./nginx -t
Nginx启动与停止
首先我们需要来到sbin目录下:
# 跳转页面
cd /usr/local/nignx/sbin
我们使用相关命令:
# 启动命令
./nginx
# 停止命令
./nginx -s stop
# 重启命令
./nginx -s reload
# 查看nginx进程
ps -ef|grep nginx
Nginx配置文件
下面我们来简单介绍一下配置文件
Nginx配置文件整体介绍
我们通常将其配置文件分为三部分:
- 全局块:和Nginx运行相关的全局配置
- events块:和网络连接相关的配置
- http块:代理,缓存,日志记录,虚拟主机配置
其中http块还分为两部分:
- http全局快
- server块
其中server还分为两部分:
- Server全局快
- location块
我们需要注意的是:
- http块中可以配置多个Server块,每个Server块中可以配置多个location块
我们可以到具体配置文件中去查看相关配置:
# 查看配置文件
vim /usr/local/nignx/conf/nignx.conf
# 以下为配置文件内容(已将#注释部分删除)
# 第一部分是全局块
worker_processes 1; # 这里表示可以同时有多少个进程
# 第二部分是events块
events {
worker_connections 1024; # 单个工作进程可以允许同时建立外部连接的数量,数字越大,能同时处理的连接越多
}
# 第三部分是http块,里面包含了代理,缓存,日志记录,虚拟主机配置等相关信息,我们后续会详细介绍
http {
# 3.1 http全局块
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 3.2 Server块
server {
# 3.2.1 Server全局块
listen 80;
server_name localhost;
# 3.2.2 location块
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Nginx具体应用
Nginx具有三方面应用,下面我们将一一讲解
Nginx部署动态资源
Nginx可以作为静态web服务器来部署静态资源。
静态资源指在服务端真实存在并且能够直接展示的一些文件,比如常见的htm页面、Css文件、 js文件、 图片、视频等资源。
我们可以直接将静态资源放置在Nginx的html文件夹下即可完成部署,同时Nginx处理静态资源的能力甚至相比于Tomcat来说更加高效
那么Nginx为什么能够自动配置静态资源呢?
# 主要依赖于我们的conf配置文件中的http块中的Server块
# Server块
server {
# 3.2.1 Server全局块
listen 80; # 表示监听端口(即我们访问网页的端口号,本机查询为192.168.44.128:80)
server_name localhost; # 端口名称(无所谓命名,一般是我们的域名)
# 3.2.2 location块
location / {
root html; # 静态资源来源(设置在html文件夹下,所以我们查找静态资源会在html文件夹下查找)
index index.html index.htm; # 默认主页,即访问192.168.44.128:80时出现的页面
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Nginx进行反向代理
在接触反向代理之前我们先来讲解正向代理:
- 正向代理是一个位于客户端和原始服务器(origin server)之间的服务器
- 客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
其正向代理的主要功能:
- 正向代理的典型用途是为在防火墙内的局域网客户端提供访问internet的途径。
其正向代理的主要特点:
- 正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。
正向代理图:

然后我们再来介绍反向代理:
- 反向代理也是是一个位于客户端和原始服务器(origin server)之间的服务器
- 但是对于用户而言,反向代理服务器就相当于目标服务器,即用于直接访问反向代理服务器就可以获得目标服务器的资源
- 用户不需要知道目标服务器的地址,也无需在用户端做任何事顶,反向代理服务器会将用户的请求转发给目标服务器并给出反馈
其反向代理的主要功能:
- 官方可能拥有很多资源的入口,反向代理服务器将作为统一的入口用来管理服务器
- 官方的服务器大部分都在内网里,我们的正常访问是无法访问成功的,因此需要借助反向代理服务器来进行访问
其反向代理的主要特点:
- 反向代理一般是在服务端设置代理服务器,客户端通过代理服务器转发请求,最终访问到目标服务器。
反向代理图:

最后我们简单介绍一下如何配置反向代理:
# 我们同样来修改配置文件
vim /usr/local/nignx/conf/nignx.conf
# 进入后设置server块
# Server块
server {
# 3.2.1 Server全局块
listen 82; # 表示监听端口(即我们访问网页的端口号,本机查询为192.168.44.128:82)
server_name localhost; # 端口名称(无所谓命名,一般是我们的域名)
# 3.2.2 location块
location / {
proxy_pass http://192.168.44.129:8080; #我们将该请求转移到http://192.168.44.129:8080指定服务中
}
}
Nginx实现负载均衡
我们首先来简单介绍一下负载均衡:
- 早期网站流量和业务功能相对简单,单台服务器可以满足基本需求
- 后期业务量逐渐增大,我们就需要采用多台服务器组成应用集群,进行性能的水平拓展以及避免单点故障出现
我们来简单解释两个概念:
- 负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理
- 应用集群:将一个应用部署到多台机器上,形成应用集群,接受负载均衡器分发的请求,进行业务处理并做出反馈
负载均衡图:

最后我们简单介绍一下如何配置负载均衡:
# 我们同样来修改配置文件
vim /usr/local/nignx/conf/nignx.conf
# 首先我们需要在http中配置应用集群
http {
# 3.1 http全局块(配置应用集群)
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream targetserver{ # upstream表示定义应用集群,targetserver为名称
server 192.168.44.129:8080; # server表示配置其转发服务器端口,192.168.44.129:8080为自己配置即可
server 192.168.44.129:8081; # server表示配置其转发服务器端口,192.168.44.129:8081为自己配置即可
}
# 3.2 Server块
server {
# 3.2.1 Server全局块
listen 8080; # 我们访问时采用192.168.44.128
server_name localhost;
# 3.2.2 location块
location / {
proxy_pass targetserver; #我们将该请求转移到targetserver应用集群中去
}
}
结束语
该篇内容到这里就结束了,希望能为你带来帮助~
附录
该文章属于学习内容,具体参考B站黑马程序员的Java项目实战《瑞吉外卖》
这里附上视频链接:项目优化Day2-08-Nginx课程内容介绍&概述_哔哩哔哩_bilibili
一篇文章带你了解轻量级Web服务器——Nginx简单入门的更多相关文章
- 轻量级HTTP服务器Nginx(入门与安装篇)
轻量级HTTP服务器Nginx(入门篇) 文章来源于南非蚂蚁 一.什么是Nginx 相信很多读者都对Apache非常熟悉,与Apache类似,Nginx是一款高性能的HTTP和反向代理服务器软 ...
- 一篇文章带你了解服务器操作系统——Linux简单入门
一篇文章带你了解服务器操作系统--Linux简单入门 Linux作为服务器的常用操作系统,身为工作人员自然是要有所了解的 在本篇中我们会简单介绍Linux的特点,安装,相关指令使用以及内部程序的安装等 ...
- 一篇文章带你掌握主流服务层框架——SpringMVC
一篇文章带你掌握主流服务层框架--SpringMVC 在之前的文章中我们已经学习了Spring的基本内容,SpringMVC隶属于Spring的一部分内容 但由于SpringMVC完全针对于服务层使用 ...
- 一篇文章带你掌握主流办公框架——SpringBoot
一篇文章带你掌握主流办公框架--SpringBoot 在之前的文章中我们已经学习了SSM的全部内容以及相关整合 SSM是Spring的产品,主要用来简化开发,但我们现在所介绍的这款框架--Spring ...
- MYSQL(进阶篇)——一篇文章带你深入掌握MYSQL
MYSQL(进阶篇)--一篇文章带你深入掌握MYSQL 我们在上篇文章中已经学习了MYSQL的基本语法和概念 在这篇文章中我们将讲解底层结构和一些新的语法帮助你更好的运用MYSQL 温馨提醒:该文章大 ...
- 一篇文章带你掌握主流基础框架——Spring
一篇文章带你掌握主流基础框架--Spring 这篇文章中我们将会介绍Spring的框架以及本体内容,包括核心容器,注解开发,AOP以及事务等内容 那么简单说明一下Spring的必要性: Spring技 ...
- 一篇文章带你掌握MyBatis简化框架——MyBatisPlus
一篇文章带你掌握MyBatis简化框架--MyBatisPlus 我们在前面的文章中已经学习了目前开发所需的主流框架 类似于我们所学习的SpringBoot框架用于简化Spring开发,我们的国人大大 ...
- 一篇文章带你了解热门版本控制系统——Git
一篇文章带你了解热门版本控制系统--Git 这篇文章会介绍到关于版本控制的相关知识以及版本控制神器Git 我们可能在生活中经常会使用GitHub网页去查询一些开源的资源或者项目,GitHub就是基于G ...
- 一篇文章带你了解NoSql数据库——Redis简单入门
一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇 ...
随机推荐
- BZOJ3572/Luogu3233 [Hnoi2014]世界树 (虚树) (Unfinished)
我太弱了,这叼题先搁着把,来日方长,自有切时... ...或许吧 #include <iostream> #include <cstdio> #include <cstr ...
- java-servlet-转发AND路径
转发: a) 什么是转发?一个web组件将未完成的任务交给另一个web组件继续做.通常是一个servlet将数据获取之后转交给jsp进行展现.注:web组件值得是servlet或者jsp b) 如何转 ...
- as 和 which 引导非限制性定语从句的区别
定语从句关系代词作用表格:as 和 which 都可以指代整个句子.as 引导非限制性定语从句可以放在主句之前.主句之后.主句之中:which 引导非限制性定语从句只能放在先行词之后. (一)As i ...
- 论文解读(PairNorm)《PairNorm: Tackling Oversmoothing in GNNs》
论文信息 论文标题:PairNorm: Tackling Oversmoothing in GNNs论文作者:Lingxiao Zhao, Leman Akoglu论文来源:2020,ICLR论文地址 ...
- ubuntu 安装及配置Apache
一.下载.启动apache2 sudo apt-get install apache2 sudo /etc/init.d/apache2 restart 二.修改配置文件 1.更改网站根目录 sudo ...
- 《Java编程思想》读书笔记(四)
前言:三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第十七章到第十八章的内容,这一次 ...
- java基础学习:java中的反射
一.什么是java反射 什么是 java 的反射? 说到反射,写这篇文章时,我突然想到了人的"反省",反省是什么?吾一日三省吾身,一般就是反思自身,今天做了哪些对或错的事情. ja ...
- Homework7
问:了解java的反射机制. 答:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法.而对于任意一个对象,都能够调用它的任意一个方法.这种动态获取的信息以及动态调用对象的 ...
- KingbaseES R3 读写分离集群在线扩容案例
案例说明: 1. 通过sys_basebackup创建新备库. 2. 将备库加入到Cluster nodes管理,可以用kingbase_monitor.sh一键启停. 3. 主备复制切换测试. 此次 ...
- mysql杂记漫谈
Hello,大家好,我是烤鸭,这几天消失了一下,主要是线上系统出了点小bug和sql性能问题,在努力搬砖,就把之前的设计模式系列放了一下下,正好趁这个复习巩固了一下sql执行计划和sql优化等相关的东 ...