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 模块
- 已=开头表示精确匹配
- 如 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
网友评论