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 ,  可忽略,  能生效,测试过。

posted @ 2018-04-15 05:10  BRUCECSDN  阅读(725)  评论(0编辑  收藏  举报