ajax nginx 转发 sessionid_百度、京东、 易、腾讯、淘宝等大厂都在用的Web服务器Nginx详解

Nginx背景和概述

Nginx(发音同 engine x)是一款基于异步框架的轻量级/高性能由C语言的Web 服务器/反向代理服务器/缓存服务器/电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·赛索耶夫)所开发,最初供俄国大型 站Rambler.ru及搜寻引擎Rambler使用。

同Apache 一样都是一种WEB 服务器,基于REST 架构风格,以统一资源描述符(Inform Resources ldentifier )URI 或者统一资源定位符(Uniform Resources Locator )URL 作为沟通依据,通HTTP 协议提供各种 络服务。Apache 的发展时期很长。而目是毫无争议的世界第一大服务器,它有着很多优点:稳定、开源、跨平台等等,它出现的时间太长了,它兴起的年代,互联 产业远近比不上现在。所以它被设计为一个重量级的它不支持高并发的服务器,在Apache 上运行数以万计的井发访问,会导致服务器消耗大量内存,操作系统其进行进程或线程间的切换也消耗了大量的CPU 图源,导致HTTP 请求的平均响应速度降低。这些都决定了Apache 不可能成为高性能WEB 服务器,轻量圾高井发服务器Nginx 就应运而生了。

Nginx特点

优点

  • 高并发量:基于 epoll/kqueue 模型开发,支持高并发量,官方说其支持高达 5w 并发连接数的响应。
  • 内存消耗少:善于处理静态文件,相较于其他web(比如:apache),占用更少的内存及资源。
  • 简单稳定:配置简单(一个conf文件),运行简单(nginx命令),而且运行稳定。
  • 节省宽带:支持GZIP压缩,可以添加浏览器本地缓存的Hedear头
  • 内置健康检查:如果nginx后端有服务区宕机了,不影响前端访问,能自动监测服务状态
  • 模块化程度高:功能模块插件化设计,可以自由配置相应的功能。
  • 支持Rwrite重写规则:能够根据域名、URL等请求关键点,实现定制化的高质量分发。
  • 低成本:Nginx的负载均衡功能很强大而且免费开源,相较于几十万的硬件负载均衡器成本相当低。
  • 支持多系统:Nginx代码完全用C语言从头写成,可以在各系统上编译并使用。

缺点

  • 动态处理差:nginx善于处理静态文件,但是处理动态页面相较于Apache之类重量级的web软件能力稍欠缺。
  • rewrite弱:虽然nginx支持rewrite功能多,但是相较于Apache之类重量级的web软件能力稍欠缺。

Nginx安装

安装(Ubuntu为例)

检查效果

服务相关命令

移除相关命令

Nginx配置

相关目录

Windows:

linux:

配置文件

nginx配置详解

  • 全局配置段

主要是全局性的和服务级别的属性配置,常见的主要有以下几种设置:

  • http配置段

主要配置server通用的一些配置:

  • server配置段

常见样式:

1.listen属性:

作用:定义server监听的ip和port,当ip和port匹配时候才进行下一步匹配。

3.root属性:

作用:定义客户端请求的html文件所在目录路径。表现形式:root /var/www/html;

4.index属性

作用:定义客户端请求时默认返回的文件。表现形式:index index.html index.htm index.nginx-debian.html;

  • location配置段

location主要是根据server匹配到的请求路径去处理和响应。 根据请求完整url,获取uri(即:除了域名(IP)、Port和路径参数之外的部分),用于location匹配。

匹配规则:

区别:

1)从用途上来讲

  • 正向代理-为局域 客户端向外访问Internet服务,可以使用缓冲特性减少 络使用率。
  • 反向代理-为局域 服务器向外提供Internet服务,可以使用负载平衡提高客户访问量,还可以基于高级URL策略和管理技术对服务进行高质量管控。

2)从安全性来讲

  • 正向代理-必须采取安全措施确保内 客户端通过它访问外部 站,隐藏客户端的身份。
  • 反向代理-对外提供服务是透明的,客户端并不知道自己访问的是一个代理,隐藏服务端的身份。

nginx代理配置说明

示例:

proxy_pass指令设置被代理服务器的地址和被映射的URI,地址可以使用主机名或IP加端口 的形式。

Nginx负载均衡

上一小节我们使用proxy_pass的方式实现了nginx代理请求到后端服务器的效果,随着我们的 站访问量越来越多,一个后端服务器就不现实了,那么接下来如何在访问量日渐增大的情况下,满足线上业务的稳定呢决方法就是:负载均衡

基本配置

示例:

负载均衡策略

Nginx提供的负载均衡策略有两种:

内置策略:nginx自带的算法

  • 雨露均沾型:轮训、加权轮训、哈希
  • 定向服务型:ip_hash、least_conn、cookie、route、lean
  • 商业类型:ntlm、least_time、queue、stick

扩展策略:各种结合业务场景自定义的算法或者第三方算法

  • 自定义算法
  • 第三方算法:fair、url_hash

常用算法简介

  • 轮询(默认):请求按顺序逐一分配到不同的后端服务器。
  • weight:指定轮询权重,值越大,分配到的几率就越高,适用于后端服务器性能不均衡情况。
  • ip_hash:按访问IP的哈希结果分配请求,分配后客户端访问固定后端服务器,有效的解决动态 页会话共享问题。
  • fair:基于后端服务器的响应时间来分配请求,响应时间短的优先分配。
  • url_hash:按访问URL的哈希结果分配请求,使同一URL定向到同一台后端服务器,可提高后端缓存服务器的效率。

加权轮训示例:

ip_hash示例:

日志解析

通过对日志文件的分析,可以为 站运营和维护提供相应的数据支持,最常见的场景就是获取客户端的IP,记录用户访问量。

Nginx默认提供了两个日志文件 access.log和error.log。

  • access.log:可以得到用户请求的相关信息;
  • error.log:可以获取某个web服务故障或其性能瓶颈等信息。

1)基本配置

2)默认日志格式

自定义日志

1)设置日志格式

2)使用日志格式

学完以上的配置,你就基本上可以使用Nginx配置一个简单的比如博客 站,自己买一个服务器然后安装Nginx配置一下文件,把你的博客文件放到指定目录下,然后访问你服务器对应的地址和端口就可以轻松的看到你的博客啦,快去尝试吧!

当然,Nginx用在大厂上面是需要更多的配置的,以满足高并发下的需求。

相关资源:CCleaner(系统垃圾清理工具)V3.18.0.1707绿色中文版_ccleaner下载…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年9月19日
下一篇 2020年9月20日

相关推荐