nginx的配置
以nginx.conf 的配置为例:
user nobody ; 进程的启动用户
worker_processes auto; work进程的个数,auto 表示 会自动根据cpu 的个数来决定开启多少 worker 进程。nginx 进程由 master and worker 组成,master 负责 读取配置文件,控制work 进程的开启和关闭,worker 进程负责处理客户端过来的访问请求。
worker_rlimit_nofile 1000000; 每个worker 进程 打开的最大文件数。
log_format main '$client_addr/$remote_addr ; 自定义日志格式,以format 后边跟的名字来区分。
access_log logs/access.log main; 调用自定义的日志格式。
error_log logs/error.log debug; 定义错误日志的存放位置 以及输出哪一级别的错误日志, error 代表输出 error 以及其级别以上的日志才输出,debug 代表debug 级别及其以上的输出。 日志级别分为八级,分别是 debug,info,notice,warn , error ,,critical ,alter, emergency。
listen 192.168.90.109:80; 监听端口
server_name _; 主机名, 下划线代表的是 未在 配置文件里定义的主机,如果想实现未定义的主机名不允许访问的话,可以用下划线代表,而后配置 return 403 ,即可实现。
server_name ""; 代表空主机名,区别于未定义的主机名。
return 301 https://$server_name$request_uri; 实现301 或302 跳转, 如 可以 配置 将http 的访问 变成对 https 的访问, return 所在的server 监听的是80 口,而后再重新配置一个监听443 端口的,即可实现http to https 。
ssl_certificate file;
ssl_certificate_key ; 配置监听Https 服务的证书文件和key 文件。
set $custom_log 1; 自定义变量。
set_by_lua $client_addr 'return ngx.var.http_srccliip or ngx.var.remote_addr'; 通过lua 命令自定义变量,注意return ,都需要有一个返回值 赋值给新的变量。
set_by_lua_file $reqid “lua_file”; 通过lua 文件定义变量,注意lua 脚本里要有返回值,将其赋值给新的变量。
header_filter_by_lua 'ngx.header.Foo = ngx.var.custom_log'; 用Lua 命令来自定义 响应头。这样会在响应头里增加一个Foo,其值为 custom_log 变量的值。
header_filter_by_lua_file ‘head_lua’; 用Lua 文件来自定义响应头,语法
ngx.header["Access-Control-Allow-Credentials"] = "this is my header" 或跟变量,如 ngx.var.host
error_page 定义 ,语法 请求返回的状态码包含在erorr_page 后的范围里的,将请求重定向最后的 url,并重新定义返回的状态码,如
error_page 500 502 503 504 =200 @jump_to_error;
返回@的页面,状态码标为200。 @类似于一个location 。
error_page 500 502 503 504 @jump_to_error;
返回@页面,状态码是前边的5xx.
error_page 500 502 503 504 =@jump_to_error;
返回@页面,状态码是@结果的状态码
if 判断:
if ($uri ~ .*\.mp4$) {
Return 403;
}
~* 不区分大小写匹配
~ 区分大小写
^$ 严格配置
^ 开头匹配
$ 结尾匹配
Nginx 配置文件分三级,Http server location,如要配置虚拟主机,可在 http 的级别里,与server 同级别,增加 如 include vhost/*.conf ,而后在 vhost/ 目录下 以。conf 结尾的配置文件就会被 nginx 读取到。
拒绝或允许某ip 访问
Deny 192.168.90.109;
Allow all; 可以是server 级别的,也可以是location 级别的。
Proxy_pass 定义反向代理。
upstream ; 定义反向代理里的后端ip,支持做健康检查,以及 根据某一规则hash 。
健康检查用的是upstream http check 模块,语法如下:
upstream proxy1{ ; 自定义代理的名字,以供 proxy_pass 调用。
consistent_hash $uri$arg_hash$arg_start$arg_end; 根据某一原则hash,
server 172.16.114.21:80 id=2 fail_timeout=5 max_fails=3 ; 定义后端真是服务器的ip,端口,以及Id 等, 这一条配置的意思是 失败三次后,5s内不会再被探测。
check interval=3000 rise=2 fall=5 timeout=1500 type=http default_down=false;探测间隔3s,单位ms,连续两次成功判断为成功,每次探测超时时间是1.5s,用http 协议探测,默认将后端服务器认为是存活的。
check_http_send "HEAD /status.html HTTP/1.1\r\nConnection: keep-alive\r\n\r\n"; 探测的命令。
check_http_expect_alive http_2xx http_3xx http_4xx; 探测成功的状态码。
keepalive 32;
check_status ; 可用来查询upstream 里的后端健康情况。页面显示,同时支持自定义参数。
nginx 报 如下错误:
nginx: [warn] low address bits of 182.201.241.14/26 are meaningless in /usr/local/refreshd/conf/vhost/monitor.conf:8
认为 掩码划分不对,正确应该是0/26 段 或 65/26 , 可忽略, 能生效,测试过。