nginx的使用
最近工作用到了Nginx,现对用到的一些东西做一下记录。
首先附一个nginx初始配置文件的结构:
... #全局块 events { #events块 ... } http #http块 { ... #http全局块 server #server块 { ... #server全局块 location [PATTERN] #location块 { ... } location [PATTERN] { ... } } server { ... } ... #http全局块 }
1、upstream模块
upstream:上游服务器设置,主要为反向代理、负载均衡相关配置,upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;
upstream demo{
server 127.0.0.1:8000 down;
server 127.0.0.1:8001 weight=2;
server 127.0.0.1:8002;
server 127.0.0.1:8003 backup
}
在需要使用负载均衡的server的location中增加
proxy_pass http://demo/;
每个设备的状态设置:
1、down表示当前的server暂时不参与负载
2、weight 默认为1.weight越大,负载的权重就越大,那么该服务器被访问到的几率就越大
3、max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4、fail_timeout:max_fails次失败后,暂停的时间。
5、backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
2、server块配置
配置虚拟主机的相关参数,一个http中可以有多个server。server部分的指令主要用于指定虚拟主机域名、IP和端口;
listen 声明服务器监听的端口号。
server_name server_name主要用来匹配url地址。
root 该设置定义的是一些静态文件的存放路径。
3、location块配置
配置请求的路由,以及各种页面的处理情况。Location接受两个参数,一个字符串或者正则和一段代码。字符串或者正则用于匹配某个特定目录。
index 设置默认页面。
expires 过期时间,例如“30d”,表示30天,如果静态文件不怎么更新,过期时间可以设大一点,如果频繁更新,则可以设置得小一点。
proxy_set_header 允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合。
proxy_redirect 修改被代理服务器返回的响应头中的location头域跟refresh头域数值。
alias和root的区别:
location /request_path/image/ { root /local_path/image/; alias /local_path/image/; }
当我们使用root时,客户端向 /request_path/image/cat.png 发起请求后,Nginx把请求映射为/local_path/image/request_path/image/cat.png
当我们使用alias时,客户端向 /request_path/image/cat.png 发起请求后,Nginx把请求映射为/local_path/image/cat.png