设为首页 收藏本站
查看: 1472|回复: 0

[经验分享] nginx之全局设置,location,虚拟主机,日志管理

[复制链接]

尚未签到

发表于 2017-12-23 12:53:36 | 显示全部楼层 |阅读模式
  nginx之全局设置,location,虚拟主机,日志管理
  worker_processes 1;//子进程,cpu数*核数
  ****************全局设置**************
DSC0000.png

DSC0001.png

  ****************location**************
  location匹配命令
  ~      #波浪线表示执行一个正则匹配,区分大小写
  ~*    #表示执行一个正则匹配,不区分大小写
  ^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
  =      #进行普通字符精确匹配
  @     #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
  location 匹配的优先级(与location在配置文件中的顺序无关)
  = 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。
  普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。
  ^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。
  最后匹配理带有"~"和"~*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。
  location 优先级官方文档

  • Directives with the = prefix that match the query exactly. If found, searching stops.
  • All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
  • Regular expressions, in order of definition in the configuration file.
  • If #3 yielded a match, that result is used. Else the match from #2 is used.

  • =前缀的指令严格匹配这个查询。如果找到,停止搜索。
  • 所有剩下的常规字符串,最长的匹配。如果这个匹配使用^〜前缀,搜索停止。
  • 正则表达式,在配置文件中定义的顺序。
  • 如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用。
  例如
location  = / {# 只匹配"/".[ configuration A ] }location  / {# 匹配任何请求,因为所有请求都是以"/"开始# 但是更长字符匹配或者正则表达式匹配会优先匹配[ configuration B ] }location ^~ /images/ {# 匹配任何以 /images/ 开始的请求,并停止匹配 其它location[ configuration C ] }location ~* .(gif|jpg|jpeg)$ {# 匹配以 gif, jpg, or jpeg结尾的请求. # 但是所有 /images/ 目录的请求将由 [Configuration C]处理.   [ configuration D ] }123456789101112131415161718location  = / {  # 只匹配"/".  [ configuration A ]}location  / {  # 匹配任何请求,因为所有请求都是以"/"开始  # 但是更长字符匹配或者正则表达式匹配会优先匹配  [ configuration B ]}location ^~ /images/ {  # 匹配任何以 /images/ 开始的请求,并停止匹配 其它location  [ configuration C ]}location ~* .(gif|jpg|jpeg)$ {  # 匹配以 gif, jpg, or jpeg结尾的请求.   # 但是所有 /images/ 目录的请求将由 [Configuration C]处理.     [ configuration D ]}  请求URI例子:

  • / -> 符合configuration A
  • /documents/document.html -> 符合configuration B
  • /images/1.gif -> 符合configuration C
  • /documents/1.jpg ->符合 configuration D
  @location 例子
  error_page 404 = @fetch;
  location @fetch(
  proxy_pass http://fetch;
  )
  ****************nginx启动,编辑,平滑修改**************
DSC0002.png

[iyunv@localhost logs]# touch access.log

[iyunv@localhost logs]# kill -USR1 3004

DSC0003.png

DSC0004.png

[iyunv@localhost nginx]# vim conf/nginx.conf

DSC0005.png

  ****************虚拟主机**************
  自己配置一个虚拟主机玩玩
DSC0006.png


[iyunv@localhost nginx]# /usr/local/nginx/sbin/nginx -s>  用windows访问一把
  修改hosts
DSC0007.png

  192.168.28.129      z.com
DSC0008.png

  ****************日志管理**************
  日志记录
DSC0009.png

DSC00010.png

DSC00011.png

DSC00012.png

DSC00013.png

  日志管理,定时日志及备份
DSC00014.png

[iyunv@localhost nginx]# date -s '2017-1-11 14:42:10'

[iyunv@localhost nginx]# date -d yesterday +"%Y%m%d %H%M"

  在 /data/目录下创建runlog.sh,并给与权限
[iyunv@localhost data]# vim runlog.sh

[iyunv@localhost data]# chmod +x runlog.sh

  runlog.sh内容如下:
  #!/bin/bash
  LOGPATH=/usr/local/nginx/logs/xx.com.access.log
  BASEPATH=/data
  nginx_pid=$(cat /usr/local/nginx/logs/nginx.pid)
  bak=$BASEPATH/$(date -d yesterday +%Y%m%d%H%M).xx.com.access.log
  #echo $bak
  #echo $nginx_pid
  mv $LOGPATH $bak
  touch $LOGPATH
  kill -USR1 $nginx_pid
  运行./runlog.sh
  看一下从/usr/local/nginx/logs/xx.com.access.log 转移到  /data/$(date -d yesterday +%Y%m%d%H%M).xx.com.access.log
  成功!
DSC00015.png

  如果自动执行: crontab -e
  编辑里面的内容为:
  *************crontab***************************************************
  基本格式 :
  *  *  *  *  *  command
  分 时 日 月 周 命令
  第1列表示分钟1~59 每分钟用*或者 */1表示
  第2列表示小时1~23(0表示0点)
  第3列表示日期1~31
  第4列表示月份1~12
  第5列标识号星期0~6(0表示星期天)
  第6列要运行的命令
  crontab文件的一些例子:
  30 21 * * * /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示每晚的21:30重启apache。
  45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示每月1、10、22日的4 : 45重启apache。
  10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示每周六、周日的1 : 10重启apache。
  0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
  0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示每星期六的11 : 00 pm重启apache。
  * */1 * * * /usr/local/etc/rc.d/lighttpd restart
  每一小时重启apache
  * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
  晚上11点到早上7点之间,每隔一小时重启apache
  0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
  每月的4号与每周一到周三的11点重启apache
  0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
  一月一号的4点重启apache
  名称 : crontab
  使用权限 : 所有使用者
  使用方式 :
  crontab file [-u user]-用指定的文件替代目前的crontab。
  crontab-[-u user]-用标准输入替代目前的crontab.
  crontab-1[user]-列出用户目前的crontab.
  crontab-e[user]-编辑用户目前的crontab.
  crontab-d[user]-删除用户目前的crontab.
  crontab-c dir- 指定crontab的目录。
  crontab文件的格式:M H D m d cmd.
  M: 分钟(0-59)。
  H:小时(0-23)。
  D:天(1-31)。
  m: 月(1-12)。
  d: 一星期内的天(0~6,0为星期天)。
  cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量
  说明 :
  crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定
  user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设
  定自己的时程表。
  参数 :
  crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数
  来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
  crontab -r : 删除目前的时程表
  crontab -l : 列出目前的时程表
  crontab file [-u user]-用指定的文件替代目前的crontab。
  时程表的格式如下 :
  f1 f2 f3 f4 f5 program
  其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执
  行的程序。
  当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
  当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
  当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
  当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
  使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
  例子 :
  #每天早上7点执行一次 /bin/ls :
  0 7 * * * /bin/ls
  在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :
  0 6-12/3 * 12 * /usr/bin/backup
  周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
  0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
  每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
  20 0-23/2 * * * echo "haha"
  注意 :
  当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之
  后加上 > /dev/null 2>&1 即可
  例子2 :
  #每天早上6点10分
  10 6 * * * date
  #每两个小时
  0 */2 * * * date
  #晚上11点到早上8点之间每两个小时,早上8点
  0 23-7/2,8 * * * date
  #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
  0 11 4 * mon-wed date
  #1月份日早上4点
  0 4 1 jan * date
  范例
  $crontab -l 列出用户目前的crontab.
  *************crontab  end***************************************************

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-427148-1-1.html 上篇帖子: nginx学习之静态内容篇(五) 下篇帖子: 开发中的石头
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表