- 日志配置和切割
- 编写自动分割Nginx日志脚本: nginxLogRotate.sh
#!/bin/bash LOGS_PATH=/usr/local/nginx/logs YESTERDAY=$(date -d "yesterday" +%Y%m%d%H%M) mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
- 设置Linux定时任务(crontab)
0 0 * * * root /usr/local/nginx/logs/nginxLogRotate.sh
- linux下crontab常用命令
查看定时状态:/etc/init.d/crond status 启动定时:/etc/init.d/crond start /etc/init.d/rsyslog status /etc/init.d/rsyslog start
- 编写自动分割Nginx日志脚本: nginxLogRotate.sh
- location配置
- location规则:
1)精准匹配:location=/
2)非正则匹配:location ^~ /static/
3)正则匹配:location ~ *.(gif|png|css|js)$
- location规则:
- 虚拟主机(server)
- 服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,同一台主机上的虚拟主机之间是完全独立的。
- 配置方式
1)基于域名的虚拟主机
2)基于ip的虚拟主机
3)基于端口的虚拟主机 - 可以将虚拟主机配置独立出一个文件来,在nginx.conf中使用include 包含独立文件
- 示例:
server{ #监听端口 listen 80 #监听域名abc.com server_name abc.com location /{ #跟目录路径 root abc; #默认的index页面为index.html页面 index index.html } }
- Location规则
- 运算符
1)普通匹配
无前缀(空格) :达到完整匹配,普通匹配
2)精准匹配
=
3)正则匹配:
~ 区分大小写
~* 不区分大小写
4)非正则匹配,不会被正则匹配覆盖
^~ - 优先级
精准匹配(不会被正则匹配) -> 一般匹配(最大长度匹配),匹配成功后,还会走正则匹配 -> 正则匹配 - nginx指令
1)root的处理结果是:root路径+location路径
2)alias的处理结果是:目录别名,使用alias路径替换location路径,路径alias后面必须要用“/”结束,否则会找不到文件,而root则可有可无
3)set: 设置变量,如:set $a 32
4)proxy_pass : 反向代理 后面有斜杠(关闭)和没斜杠(开放)不一样。关闭和开放只针对在端口后的斜杠“/”
5)upstream:负载均衡配置
6)if(condition){...}:当表达式只是一个变量时,如果值为空或任何以0开头的字符串都会当做false
- 运算符
- Rewrite的使用
rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。
rewrite只能放在server{},location{},if{}中,并且只能对应后边的出去传递的参数外的字符串起作用,例如http://seanlook.com/a/we/index.jsp?id=1&u=str只对/a/we/index.php重写。
-
Rewrite使用语法:rewrite regex replacement [flag]
1)regex 匹配路径的正则表达式
2)replacement 用于替换匹配正则表达式路径的新路径
3)flag 是处理标志,包括 break,last,rediret(301重定向),permanent(302重定向)1>内部重定向,换Path值 break 停止执行后续命令 last 会引发location重新匹配 2>外部重定向(会修改浏览器地址): rediret(301重定向) permanent(302重定向) 3>flag为空,rewrite后还会继续往下执行
4)tips:
1>当有flag值时,rewrite层面的命令会中断。last会引发location重匹配
2>当没有flag值得时候,rewrite还会往下走,最后一个rewrite覆盖前面。再引发location重匹配 ^/ 正则表达式,代表匹配全部
若rewrite正则匹配命中,则替换,否则不替换
rewrite匹配后,后面的语句不会执行
- 负载均衡配置:nginx的upstream目前支持4种方式的分配
- 轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
- weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。down掉的服务器暂时不参与负载
- ip_hash:每个请求按访问ip的hash结果分配,这样每个方可固定访问一个后端服务器,可以解决session的问题
- 示例:
upstream nginx{ ip_hash; server 172.17.0.41:8081 weight=2 server 172.17.0.40:8081 weight=1 }
- 反向代理实战
- 实现一个Nginx配置:static域名的请求,读取静态文件api的域名,请求tomcat。其中,order路径路由到order服务群,product路径路由到product服务群
- location进阶(共11个阶段)
nginx主要的运行阶段
1)rewrite阶段:--类似controller
2)access阶段: --service
3)content阶段:--response文本给浏览器。echo是content阶段,是第三方模块将rewrite能执行的全部执行之后,access,然后content
set命令是rewrite级别的
location与后台服务是如何衔接的:proxy_pass
-
代理转发:
1)静态转发:1>root(默认) 在目录找path1(匹配路径)+path2(剩余路径) 2>alias 在目录里找path2路径(剩余路径) tips: 若url以/结尾,认为是目录,执行index。index命令与root/alias指定目录无关,直接在本次匹配的路径下找index指定的文件;否则认为path路径到达文件
2)动态转发(proxy_pass): proxy_pass的关闭与不关闭,针对Ip+port之后有没有/
echo模块的安装
1)下载 echo-nginx-module-0.60并解压
2)./configure --add-module=解压path --with-http_ssl_module
3)make ##编译
4)make install ##安装
Nginx(二)Nginx使用
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...