美文网首页
Lesson-26 Nginx

Lesson-26 Nginx

作者: 阿瑟李 | 来源:发表于2015-09-11 15:37 被阅读37次

nginx启动、关闭、重启

  • 开启 nginx
  • 重新加载配置|重启|停止|退出 nginxnginx -s reload|reopen|stop|quitn
  • 测试配置是否有语法错误nginx -t
  • 启动 nginx 后,默认的开启的是8080端口,可以通过修改配置文件来设置端口:vim /usr/local/etc/nginx/nginx.conf
  • 默认访问的目录:/usr/local/Cellar/nginx/1.8.0/html我这里安装的nginx版本为1.8.0
设置 nginx 开机启动:
mkdir -p ~/Library/LaunchAgents //创建目录
cp /usr/local/Cellar/nginx/1.8.0/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/ //复制脚本到指定地点
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist //定时执行任务

设置权限:
sudo chown root:wheel /usr/local/Cellar/nginx/1.8.0/bin/nginx //修改所有者
sudo chmod u+s /usr/local/Cellar/nginx/1.8.0/bin/nginx //修改权限
OK,到这里我们已经成功安装了nginx并设置开机启动。
  • 在linux下可以用crontab来定时执行任务,在mac下可以用launchctl来定时执行任务
  • chown是一条在Unix系统中用于设置文件所有者和文件关联组的命令
  • chmod是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数。

Nginx主要功能

三大功能 同时存在

  • Handlers 处理模块 主要处理网络请求
  • Filters 过滤模块 针对其他模块的内容进行处理加工
  • Proxies 代理模块 和其他模块交互 处理负载和均衡

配置文件结构

main :  //全局设置
Events block { 
}
Http block {
  server block {  //主机设置
    location block {  //url 匹配
    }
  }
}

可以再配置文件中设置 gzip 文件压缩相关选项

gzip on;
gzip_min_length 1k;
gzip_http_version 1.1;
gzip_buffers 4 16k;
......

可以再配置里添加负载均衡选项 upstream

负载均衡在这里分为4种

  • 轮训 默认
  • weight 指定轮训权值
  • ip_hash 按照ip分配服务器
  • fair 智能负载 需要加载 upstream_fair 模块
  • url_hash 按照url 分配
    在设置负载均衡的事后也可以设置一些参数 比如暂不使用(down) backup(预留机) max_fails(最大失败次数) 等等

使用 http proxy模块 来设置代理

防盗链

当有请求的时候 我们可以 在location 里面检查 来源 防止别人盗取你的数据 返回403 更复杂的 可以使用 httpaccesskey-module 模块

location 有许多规则
文章
文章2

  • 已=开头表示精确匹配
  • 如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。
  • ^~ 开头表示uri以某个常规字符串开头,不是正则匹配
  • ~ 开头表示区分大小写的正则匹配;
  • ~* 开头表示不区分大小写的正则匹配
  • / 通用匹配, 如果没有其它匹配,任何请求都会匹配到
location = / {

 # 精确匹配 / ,主机名后面不能带任何字符串

 [ configuration A ] 

}

location / {

 # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求

 # 但是正则和最长字符串会优先匹配

 [ configuration B ] 

}

location /documents/ {

 # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索

 # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条

 [ configuration C ] 

}

location ~ /documents/Abc {

 # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索

 # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条

 [ configuration CC ] 

}

location ^~ /images/ {

 # 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。

 [ configuration D ] 

}

location ~* \.(gif|jpg|jpeg)$ {

 # 匹配所有以 gif,jpg或jpeg 结尾的请求

 # 然而,所有请求 /images/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则

 [ configuration E ] 

}

location /images/ {

 # 字符匹配到 /images/,继续往下,会发现 ^~ 存在

 [ configuration F ] 

}

location /images/abc {

 # 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在

 # F与G的放置顺序是没有关系的

 [ configuration G ] 

}

location ~ /images/abc/ {

 # 只有去掉 config D 才有效:先最长匹配 config G 开头的地址,继续往下搜索,匹配到这一条正则,采用

 [ configuration H ] 

}

location ~* /js/.*/\.js

相关文章

网友评论

      本文标题:Lesson-26 Nginx

      本文链接:https://www.haomeiwen.com/subject/xeelcttx.html