Nginx

JAVA ZMAS 5℃ 0评论

[熟悉]Nginx概念

Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,使用C语言开发,具有占内存少,处理并发能力强等特点,看一本书上写nginx支持5万左右的并发。

正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端代理发送一个请求并指定目标,然后代理服务器向原始服务器转交请求并获得内容返回客户端。
(说白了,用户知道自己要访问哪个网站,只不过是借助代理服务器访问。 如:你想上谷歌上不了,用一个国外的代理服务器进行访问就能访问谷歌了。)

反向代理与正向代理恰好相反:对于客户端来说反向代理就是一台原始服务器,客户端只需向反向代理发送一个普通请求,接着反向代理向原始服务器转交请求,并且将获得的内容返回给客户端,就像这写内容本来就是反向代理的一样
(用户只知道要访问服务器甚至不知道有代理这回事,而代理服务器将这个请求分配给不同的IP来处理)

在我们项目中主要使用nginx的反向代理进行负载均衡,及图片服务器的访问。

[熟悉]Nginx实现负载均衡

nginx 的 upstream目前支持 4 种方式的分配

  1. 轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  2. weight
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
  3. ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
  4. fair(第三方) (菲尔)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
  5. url_hash(第三方)此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

[熟悉]Nginx项目中的实际应用

我们的项目,为了安全,一般都部署在内外环境中,只有Nginx服务器会绑定域名,放到公网环境上。当用户从公网发送一个请求过来时,首先请求到Nginx,
然后通过Nginx再反向代理到其他内外服务器上。
我们的服务器一般都采用centos7,
因为Nginx是c语言开发的,所以Nginx环境的安装,
需要一些gcc环境的支持,
如果用rpm安装,
他的默认路径是/etc/nginx;
会自动绑定到服务上,直接用systemctl start Nginx就可以。 Nginx的核心配置文件是conf下的Nginx.xml,他主要有两大功能,一是反向代理,通过配置文件中的server和location来实现,可以配置多个server,制定不同的端口或同一个端口,不同的域名来实现代理,也可以通过一个server里边配置多个location来实现代理。二是负载均衡,负载均衡一般通过配置upstream来实现,常用的负载机制有轮循、权重和ip_hash三种;轮循就是各个服务器按顺序轮着进行;权重就是通过配置weight权重,来分配url的访问次数。Ip_hash是根据客户请求的sessionid,把同一个用户的请求,锁定到同一个url上。 Nginx除了他的反向代理和负载均衡以外,他本身也是一个静态服务器,可以用它发布html、css、img等一系列静态资源。我们项目中做静态化生成的静态页面就放在了Nginx服务器上。

转载请注明:ZMAS‘S blog » Nginx

喜欢 (3)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址