Nginx快速入门教程


Posted in Servers onMarch 31, 2021

一、Nginx介绍

1. 什么是Nginx?

  • Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
  • 其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

2. 为什么要使用Nginx?

随着当今互联网的迅速发展,单点服务器早已无法承载上万个乃至数十万个用户的持续访问。比如一台Tomcat服务器在理想状态下只能够可以承受住2000个左右的并发量,为了解决这个问题,就需要多台Tomcat服务器来进行负载均衡。

那么,应该如何实现负载均衡?Nginx就是其中的一种解决方案,当用户访问网站时,Nginx拦截到这个访问请求,并将其通过轮询的方式均匀地分配到不同的服务器上。

Nginx快速入门教程

并且,在Nginx中有一种ip_hash策略,它可以获取到用户的真实IP,计算出hash值来选择服务器,这也是一种优秀的负载均衡方式。 所以,掌握Nginx成为了Web开发学习道路上不可缺少的一部分。

3. 什么是正向代理?

正向代理,就是客户端将自己的请求率先发给代理服务器,通过代理服务器将请求转发给服务器。我们常用的VPN就是一种代理服务器,为了可以连上国外的网站,客户端需要使用一个可以连接外网的服务器作为代理,并且客户端能够连接上该代理服务器。

Nginx快速入门教程

4. 什么是反向代理?

反向代理与正向代理不同,正向代理是代理了客户端,而反向代理则是代理服务器端。在有多台服务器分布的情况下,为了能让客户端访问到的IP地址都为同一个网站,就需要使用反向代理。

Nginx快速入门教程

明白了反向代理的工作机制后,接下来就可以进入Nginx的学习!

二、Nginx在Linux下的安装

由于Nginx被大量使用在Web服务器中,所以本教程选择了Centos服务器的7.4版本作为演示!

1. 下载

进入官方下载页面:http://nginx.org/en/download.html,选择Stable version稳定版本进行下载,并上传至服务器。

Nginx快速入门教程

2. 安装

上传tar包至服务器后,解压到当前目录

tar -zxvf nginx-1.18.0.tar.gz -C ./

进入解压后的目录,执行configure脚本

cd nginx-1.18.0/
./configure

使用make命令进行安装

make && make install

安装完成后,使用whereis命令查找Nginx的安装位置 (默认安装在/user/local/目录下)

whereis nginx

进入安装目录下的bin文件夹,启动nginx服务,访问服务器默认的80端口查看是否安装成功!

Nginx快速入门教程

三、Nginx配置入门

1. 配置文件

在Nginx的安装目录下有一个conf文件夹,打开其中的nginx.conf文件

cd conf/ && vim nginx.conf

Nginx快速入门教程

2. 反向代理单个服务器

那么,如何使用Nginx进行反向代理?

在location参数中添加proxy_pass字段,并填写需要反向代理的服务器地址与端口号:

注意:每一行的配置都需要以封号结尾!!!

# 配置监听的目录为:/
location / {
	root html;
	index index.html index.htm;
	proxy_pass http://127.0.0.1:8080; # 反向代理了本机的8080端口
	# proxy_pass http://127.0.0.1:8081; # 可以同时配置多条proxy_pass,反向代理了本机的8081端口
}

3. 反向代理多台服务器

如果有多台服务器怎么办?除了不断地添加proxy_pass参数,更好的解决方案是配置upstream服务器组!

在配置文件的http块中添加upstream属性:

# 配置服务器组,取名为hello
upstream hello{
	# 一个server对应一个服务器,当然也可以是不同端口的web程序
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}
# 在location块中修改反向代理为服务器组
location / {
	root html;
	index index.html index.htm;
	proxy_pass http://hello; # 反向代理了hello服务器组中的所有服务器
}

四、运行测试

1. 启动服务

配置完成后,进入Nginx安装目录下的sbin文件夹,运行nginx程序即可:

/usr/local/nginx/sbin/nginx

如果之前已经启动,无需关闭nginx服务,只需要让nginx重新加载配置文件即可:

nginx -s reload

刷新浏览器,若反向代理成功,访问的路径会自动映射到配置文件中的服务器地址!

将来,随着用户量的增长,可能需要添加新的服务器;这时只需要修改配置文件,使用 nginx -s reload 命令即可,无需关闭nginx服务器!

2. 关闭服务

关闭nginx服务的方式一般分为两种:

nginx -s stop # 立即停止,无论是否在工作
nginx -s quit # 等待进程完成当前工作后安全退出

五、负载均衡

1. 什么是负载均衡?

由于不同服务器的配置不同,为了让性能高的服务器分配到更多的请求,便引入了负载均衡的概念。

前面提到过,Nginx的负载均衡方式可以有很多种,如加权轮询(默认)、IP哈希、url哈希等等,这里就以加权轮询作为介绍。

加权轮询,也就是通过给服务器添加各自的权重值,Nginx通过权重来进行请求的分配,权重越高接收到的请求数量越多,反之越少:

Nginx快速入门教程

上图配置了三台服务器,在加权轮询的模式下,6次不同的请求中,权重为3的服务器将会分配到3次请求,权重为2的服务器会分配到2个请求,权重为1的服务器则会分配到1个请求。负载均衡大大减少了在高并发的环境下服务器宕机的风险!

2. 配置Nginx负载均衡

同样地,打开nginx.conf文件进行配置:

vim nginx.conf

在upstream块中添加weight参数:

upstream hello{
	server 服务器1:8080 weight=3; # 配置服务器1的权重为3
	server 服务器2:8080 weight=1; # 配置服务器2的权重为1
}

添加完成后执行 nginx -s reload 即可!

以上就是Nginx服务快速入门教程的详细内容,更多关于nginx入门教程的资料请关注三水点靠木其它相关文章!


Tags in this post...

Servers 相关文章推荐
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
Jun 21 Servers
nginx 反向代理之 proxy_pass的实现
Mar 31 Servers
查看nginx配置文件路径和资源文件路径的方法
Mar 31 Servers
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
Filebeat 采集 Nginx 日志的方法
Mar 31 Servers
Nginx使用Lua模块实现WAF的原理解析
Sep 04 Servers
Kubernetes中Deployment的升级与回滚
Apr 01 Servers
Apache Hudi 加速传统的批处理模式
Apr 24 Servers
腾讯云服务器部署前后分离项目之前端部署
Jun 28 Servers
kubernetes集群搭建Zabbix监控平台的详细过程
Jul 07 Servers
nginx七层负载均衡配置详解
Jul 15 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
Jul 15 Servers
nginx如何将http访问的网站改成https访问
Mar 31 #Servers
Nginx+Tomcat实现负载均衡、动静分离的原理解析
使用nginx动态转换图片大小生成缩略图
Mar 31 #Servers
Nginx反向代理多个服务器的实现方法
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
为什么 Nginx 比 Apache 更牛逼
Mar 31 #Servers
Nginx的rewrite模块详解
Mar 31 #Servers
You might like
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
学习jquery之一
2007/04/27 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
跟老齐学Python之for循环语句
2014/10/02 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
茶叶店创业计划书范文
2014/01/19 职场文书
小学生成长感言
2014/01/30 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
迎新生欢迎词
2015/01/23 职场文书
病人慰问信范文
2015/02/15 职场文书
python中的装饰器该如何使用
2021/06/18 Python
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers