深入理解NGINX(Nginx学习进阶)
深入理解NGINX(Nginx学习进阶)
2024-11-08 09:37:14  作者:醉过痛过  网址:https://m.xinb2b.cn/sport/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-09麻雀李易峰发型帅气逼人前几天刚刚得知抗战剧《烽烟尽处》即将播出这消息,看到久违不见的张翰,着实让我感到震惊,原来传说中的“偶像塘主”居然也开始演战争题材的正剧了,难道《战狼2》后,张翰果真开始转型了话说,在《烽烟尽处》开播。
  • 为啥同村同姓的不能结婚(在农村要被骂的)
  • 2024-11-09在农村要被骂的刚才在刷头条,看到两位同名同姓的人结婚了,很多人恭喜他们,我也恭喜他们,可是在我们农村呀,这是要被骂的,在我们农村你要是找姑姑家女儿这样的虽然是近亲,结婚也不好,法律也不允许,却没人骂你,但是你要是找。
  • 池塘底钓鲫鱼技巧(浅谈池塘早春钓鲫鱼技巧)
  • 2024-11-09浅谈池塘早春钓鲫鱼技巧钓具:常言道:春钓鲫鱼有三巧,竿长线细鱼钩小草塘钓鲫的钓组,以长竿为佳,竿的调性应略硬,这是因为草塘水都比较浅,深不过1.5米,浅则70~80厘米在这样的环境钓鱼,应选草洞或草缝,离岸越远上钩率越高,。
  • 忻州现代双语教学特色目标(以校本课程为抓手)
  • 2024-11-09以校本课程为抓手齐鲁网·闪电新闻11月11日讯为有效推动英语特色教育发展,突破传统英语教学模式,搭建合作交流平台,11月10日下午,潍坊青州一中实验学校开展主题为“特色课程绽放最美才华”英语社团活动,提升学生的英语学。
  • 六个月宝宝辅食怎么做(六个月宝宝辅食可以做什么吃)
  • 2024-11-09六个月宝宝辅食可以做什么吃蛋黄泥,鸡蛋先煮熟,然后用勺子弄出蛋黄碾压成泥状,加入少量的白开水或者奶类,然后调成糊状就可以给宝宝吃了在添加蛋黄的时候,首先从八分之一的蛋黄开始添加,如果宝宝吃了几天没有异样,可以慢慢增加南瓜泥,将。
  • 董明珠为什么卖不动格力(再生变局格力经销商)
  • 2024-11-09再生变局格力经销商格力迎来渠道改革阵痛期“不做格力了”先是停止发货,后市“倒戈”向飞利浦,此前,格力电器与河北格力总经销商徐自发之间的矛盾闹得沸沸扬扬而仅仅几日之后,向来杀伐果断的“铁娘子”董明珠就快刀斩断了“乱麻”8。
  • 清雅有意境的女孩名字(浑然天成的女孩名字)
  • 2024-11-09浑然天成的女孩名字文雅古风,是现今非常流行的一类新型文化,其中蕴含很多的中国传统元素,故而受到很多人的喜爱喜爱古风的家长为宝宝起名的时候其实也可以选择给女孩取一个文雅古风的名字,这样的名字不光看起来非常诗意内涵,而且非。
  • 臭豆腐介绍(臭豆腐相关介绍)
  • 2024-11-09臭豆腐相关介绍臭豆腐是中国传统特色小吃之一,在各地的制作方式、食用方法均有相当大的差异,有北方和南方的不同类型,臭豆腐在南方又称臭干子其名虽俗气、却外陋内秀、平中见奇、源远流长,是一种极具特色的中华传统小吃,古老而。