Nginx
学习笔记
Nginx
常用功能
1.Http
代理,反向代理(作为web
服务器最常用的功能之一,尤其是反向代理)
下面用张图来解释什么是正向代理与反向代理。
Nginx
在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx
可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web
服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx
对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
2.负载均衡
Nginx
提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash
。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。
2.1 轮询,加权轮询
2.2 ip_hash
Ip hash
算法,对客户端请求的ip
进行hash
操作,然后根据hash
结果将同一个客户端ip
的请求分发给同一台服务器进行处理,可以解决session
不共享的问题。
2.3 stricky
3 web
缓存
Nginx
可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache
,主要用于对FastCGI
的动态程序进行缓存。配合着第三方的ngx_cache_purge
,对制定的URL
缓存内容可以的进行增删管理。
4 Nginx
相关地址
源码:https://trac.nginx.org/nginx/browser
官网:http://www.nginx.org/
Nginx
配置文件结构
conf
文件夹的nginx.conf
文件,Nginx
服务器的基础配置,默认的配置也存放在此。
在nginx.conf
的注释符号位#
nginx
文件的结构,这个对刚入门的同学,可以多看两眼。
默认的config
... #全局块
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块:配置请求的路由,以及各种页面的处理情况。
需要注意的有以下几点:
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
:记录客户端浏览器的相关信息;
9.惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能。
10.每个指令必须有分号结束。