深入理解NGINX(Nginx学习进阶)
深入理解NGINX(Nginx学习进阶)
2024-11-22 07:31:53  作者:醉过痛过  网址:https://m.xinb2b.cn/life/dta260997.html


本文将为您详细介绍如何在 CentOS 系统下部署 Nginx 项目。

本文在示例步骤中的软件版本如下,在实际操作时,请您以实际软件版本为准。

操作系统:CentOS 7.5nginx 版本:Nginx 1.12.2安装 Nginx

# 安装 n=Nginx:yum -y install nginx # 查看 Nginx 版本nginx -v# 查看 Nginx 安装目录rpm -ql nginx# 启动 Nginxservice nginx start

按照上面步骤按照好nginx后,访问服务器的公网 IP 地址,出现如下页面则表示 Nginx 部署完成:


Nginx 的默认根目录 root 是/usr/share/nginx/html,直接修改 html 下的 index.html 静态页面,用来标识这个页面的特殊性。

vim /usr/share/nginx/html/index.html# 在页面中输入Hello nginx , This is rs-1!URL is index.html

负载均衡(原“应用型负载均衡”)可以根据后端服务器的路径来进行请求转发,在/image路径下部署静态页面,相关命令如下:

# 新建目录 imagemkdir /usr/share/nginx/html/imagecd /usr/share/nginx/html/imagevim index.html# 在页面中输入Hello nginx , This is rs-1!URL is image/index.html

注意:

Nginx 的默认端口是80,如果想修改端口请修改配置文件并重启 Nginx。

验证 Nginx 服务

访问服务器的公网 IP 路径,如果可以显示出已部署好的静态页面,则证明 Nginx 部署成功。

rs-1 的 index.html 页面:


rs-1 的 /image/index.html 页面:



Nginx文件结构

首先看一下nginx配置文件结构

... #全局块events { #events块 ...}http #http块{ ... #http全局块 server #server块 { ... #server全局块 location [PATTERN] #location块 { ... } location [PATTERN] { ... } } server { ... } ... #http全局块}

1、全局块:配置影响nginx全局的指令。

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

2、events块:配置影响nginx服务器或与用户的网络连接。

有:每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。5、location块:配置请求的路由,以及各种页面的处理情况。

下图具体标示具体的文件结构


Demo

下面给大家上一个配置文件,作为理解。



上面是nginx的基本配置,需要注意的有以下几点:

1、几个常见配置项:

1.$remote_addr 与 $http_x_forwarded_for 用以记录客户端的ip地址;2.$remote_user :用来记录客户端用户名称;3.$time_local : 用来记录访问时间与时区;4.$request : 用来记录请求的url与http协议;5.$status : 用来记录请求状态;成功是200;6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;7.$http_referer :用来记录从那个页面链接访问过来的;8.$http_user_agent :记录客户端浏览器的相关信息;

2、惊群现象:

一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能。

3、每个指令必须有分号结束。


前言

在多个应用实例间做负载均衡是一个被广泛使用的技术,用于优化资源效率,最大化吞吐量,减少延迟和容错。

nginx可以作为一个非常高效的HTTP负载均衡器来分发请求到多个应用服务器,并提高web应用的性能,可扩展性和可靠性。

1、负载均衡方法

nginx支持以下负载均衡机制(或者方法):

round-robin/轮询: 到应用服务器的请求以round-robin/轮询的方式被分发;least-connected/最少连接:下一个请求将被分派到活动连接数量最少的服务器;ip-hash/IP散列: 使用hash算法来决定下一个请求要选择哪个服务器(基于客户端IP地址);1.1、默认负载均衡配置(轮询)

nginx中最简单的负载均衡配置看上去大体如下:

http {

upstream myapp1 {

server srv1.example.com;

server srv2.example.com;

server srv3.example.com;

}

server {

listen 80;

location / {

proxy_pass http://myapp1;

}

}

}

在上面的例子中, 同一个应用有3个实例分别运行在srv1、srv2、srv3。当没有特别指定负载均衡方法时, 默认为round-robin/轮询。所有请求被代理到服务器集群myapp1, 然后nginx实现HTTP负载均衡来分发请求。

nginx中反向代理的实现包括HTTP, HTTPS, FastCGI, uwsgi, SCGI, 和 memcached的负载均衡。

要配置负载均衡用HTTPS替代HTTP,只要使用”https”作为协议即可。

为FastCGI, uwsgi, SCGI, 或 memcached 搭建负载均衡时, 只要使用相应的fastcgi_pass, uwsgi_pass, scgi_pass, 和 memcached_pass指令。

1.2、最少连接负载均衡(least-connected/最少连接)

另一个负载均衡方式是least-connected/最少连接。当某些请求需要更长时间来完成时,最少连接可以更公平的控制应用实例上的负载。

使用最少连接负载均衡时,nginx试图尽量不给已经很忙的应用服务器增加过度的请求, 而是分配新请求到不是那么忙的服务器实例。

nginx中通过在服务器集群配置中使用least_conn指令来激活最少连接负载均衡方法:

upstream myapp1 {

least_conn;

server srv1.example.com;

server srv2.example.com;

server srv3.example.com;

}

1.3、会话持久化(ip-hash)

请注意,在轮询最少连接负载均衡方法中,每个客户端的后续请求被分派到不同的服务器。对于同一个客户端没有任何方式保证发送给同一个服务器。

如果需要将一个客户端绑定给某个特定的应用服务器——用另一句话说,将客户端会话”沾住”或者”持久化”,以便总是能选择特定服务器,那么可以使用ip-hash负载均衡机制。

使用ip-hash时,客户端IP地址作为hash key使用,用来决策选择服务器集群中的哪个服务器来处理这个客户端的请求。这个方法保证从同一个客户端发起的请求总是定向到同一台服务器,除非服务器不可用。

要配置使用ip-hash负载均衡,只要在服务器集群配置中使用ip_hash指令:

upstream myapp1 {

ip_hash;

server srv1.example.com;

server srv2.example.com;

server srv3.example.com;

}

2、带权重的负载均衡

可以通过使用服务器权重来影响nginx的负载均衡算法。

在上面的例子中,服务器权重没有配置,这意味着所有列出的服务器被认为对于具体的负载均衡方法是完全平等的。

特别是轮询,分派给服务器的请求被认为是大体相当的。假设有足够的请求,并且这些请求被以同样的方式处理而且完成的足够快。

当服务器被指定weight/权重参数时,负载均衡决策会考虑权重。如下所示

upstream myapp1 {

server srv1.example.com weight=3;

server srv2.example.com;

server srv3.example.com;

}

在上面的这个配置中,假设有5个新的请求。那么每5个新请求将会如下的在应用实例中分派:

3个请求分派去srv1,一个去srv2,另外一个去srv3.

在最近的nginx版本中,可以类似的在最少连接和IP哈希负载均衡中使用权重。

  • 蝴蝶兰怎么养才会爆花(冬天养棵蝴蝶兰)
  • 2024-11-22冬天养棵蝴蝶兰本文看点:想让家里的蝴蝶兰长得更好,很重要的一点就是合适的温度,必须放在家里非常温暖的环境中,25摄氏度左右是最佳的光照也是必不可少的,充足的光照能够为其带来一定的热量并让周边温度升高你家有养蝴蝶兰吗。
  • 46首草原歌曲(青涩草原)
  • 2024-11-22青涩草原(一)由‬来‬古老的草原其实就像在许多农区一样,为了生存,田边地角的纠纷总是少不了今天你铲地边时挖了我的田坎,明天我种地时挖了你的地角我的鸡刨你的菜地,你的牛羊吃了我的庄稼我浇庄稼时,你又豁了我的水沟。
  • 撩到我的心尖上了(爽到了终于盼来她)
  • 2024-11-22爽到了终于盼来她恭喜国产剧,治渣手段终于爽出了新格局!发现老公闫伟伦(张峻宁饰)出轨后,苏菲(秦岚饰)怎么做?先是故意打草惊蛇:冲去渣男和第三者约会的酒店,嘴上说着送惊喜,却实打实送了一场惊吓然后,略施小计,成功让渣。
  • 朱一龙最新一人分饰两角(朱一龙领奖合集)
  • 2024-11-22朱一龙领奖合集文/梧弋柠朱一龙领奖合集:五十五个角色七次获奖,这一次不再让他这颗明珠蒙尘了!朱一龙十年戏龄,积累了五十五部作品与角色每一次领奖都是一次成长,从最开始是的稚嫩,到现在的稳重,他的眼睛是最好的答案第一次。
  • 贵州探洞影像中心(贵州探洞摄影师周元杰)
  • 2024-11-22贵州探洞摄影师周元杰图为“洞·境”展厅内周元杰在看自己拍摄的洞穴照片周燕玲摄中新网贵阳11与24日电题:贵州探洞摄影师周元杰:用光影点亮“地下世界”作者周燕玲袁超贵州作为世界喀斯特地貌发育最典型的地区之一,“地下世界”千。
  • 为什么有人会朋友圈设置3天可见 为什么越来越多人朋友圈设置三天可见
  • 2024-11-22为什么有人会朋友圈设置3天可见 为什么越来越多人朋友圈设置三天可见此前微信之夜的官方数据显示,将朋友圈设置为仅三天可见的人数已经达到了2亿,而在近日网上的一项「朋友圈功能可查看范围调查」数据显示有超过60%的微信用户设置成了朋友圈三天可见为什么越来越多人朋友圈设置三。
  • 当你在纠结的时候怎么做选择 抉择and决择
  • 2024-11-22当你在纠结的时候怎么做选择 抉择and决择相信大家对“你只有读书,才会有出路”这句话并不陌生吧但也有“三百六十行,行行出状元”那究竟谁对谁错呢?无论对错,这两句话可以推出两个观点,一个是职业不分大小,在小行业也能有大成就另一个则是不读书就没有。
  • 天蝎座这个月什么时候有桃花运(邱比特的箭正在射出)
  • 2024-11-22邱比特的箭正在射出天蝎座:宿命抉择的桃花天蝎座爱的动机是执着,爱情本就疯狂,带着执着进入一种状态的更让人纠结,爱的火热,不可抗,并且自带OK蹦,热水袋,打气筒这些特质是一种肯定,他们专一,真诚,只要是他们认定的,而且是。
  • 勇敢是女生的代名词(About勇敢)
  • 2024-11-22About勇敢原创沐筱沐筱随笔2019-02-0917:21好久没有更新,除了繁忙的工作外,自己也确实有些懒惰和懈怠了想想去年过年时立的那些flag,有些做到了,有些却终未实现,想来也是有遗憾的想去的新加坡到现在还。
  • 英魂之刃端游高端局推荐英雄(从剑魂之刃到三啊三)
  • 2024-11-22从剑魂之刃到三啊三《剑魂之刃》是由极品无限自主研发、并由昆仑游戏独家代理的一款MMOACT全球首款手势操控格斗手游开启限免24小时内,《剑魂之刃》便达排名免费榜第2位,游戏类第一,同时日下载量达20万左右独特的划屏玩法。