目录:如果只想知道怎么用的转:4.nginx的用法
1.Nginx是什么?----定义和关键概念理解
nginx是一个http代理和反向代理服务器,下面是其英文说明。
代理和反向代理的意思
代理是有一堆机器,比如大学宿舍的很多同学的电脑,然后因为没有那么多的ip,于是通过一个代理发送到互联网上的app请求资源,在App视角来看,这些请求都来自一个ip,即宿舍同学的机器都是被一个服务器给代理了,如下图:
而反向代理则是如下图,有一堆请求到一个代理服务器,代理服务器将这些请求发送给一个集群的服务器做负载均衡去处理请求,可以看到代理和反向代理的方向是反的。
2.Nginx能干什么?----用途
1)静态内容的处理
例如nginx的配置文件里有如下内容:
比如data/www目录下放了index.html和其他文本内容,data/images目录下有很多的图片,这个配置的意思是请求中带有/image的请求会和location中/image匹配,然后组装成/data/image,其余的请求则会到data/www目录下去找资源
举个例子:
假设server在localhost的80端口,带image的请求时这样匹配的:
而不是以image开始的请求则是这样匹配的:
2)做代理
如下:
这个配置的意思是凡是对8080请求,凡是以gif、jpg、png结尾的都会被代理到到/data/image (注意这里的第二个location那里写了正则表达式)
3)反向代理负载均衡
如下:upstream是一个上游服务器,有三台。server监听80端口的请求,并将所有请求转发到http://myapp1去处理
这里的upstream没有写任何策略,则默认的是round robin轮询的,也就是一台一次的处理。
4)服务分发
比如有这样的服务器:
http {
upstream rtmp_backend {
server 127.0.0.1:8090;
server 127.0.0.1:9000;
}
upstream flv_backend {
server 127.0.0.1:8080;
}
我设置了这样的匹配规则:这里的意思是请求带上了8000?ttype=...,会根据参数ttype的值将请求分发给不同的服务器去处理,比如ttype为flv则分发给flv_backend
map "$arg_ttype" $backend_server {
"flv" flv_backend;
"rtmp" rtmp_backend;
default "172.16.1.2";