Nginx
1.查找安装路径
whereis nginx
2.检查配置文件nginx.conf 是否正确
./nginx –t
3.启动、停止nginx
cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s quit
./nginx -s reload
./nginx -s quit # 此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s stop # 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
4.查询nginx进程:
ps aux|grep nginx
5.重新加载配置文件
./nginx -s reload
6.配置nginx.conf
#======================以下是全局配置项
#指定运行 Nginx 的用户和用户组 ,
#默认情况下该选项关闭(关闭的情况下使用的用户就是 nobody)
#user nobody nobody ;
#表示操作系统启动多少个工作进程运行 Nginx
worker processes 1 ;
#Nginx 运行错误的日志存放位置。当然你还可以指定错误级别
#error log logs/error.log ;
#error_log logs/error.log notice ;
#error_log logs/error.log info ;
#指定主进程 id 文件的存放位置,虽然 worker processes != 1 的情况下, 会有很多进程 , 管理进程却只有一个
#pid logs/nginx.pid;
events {
#指单个工作进程可以允许同时建立外部连接的数量, 无论这个连接是 Nginx 外部建立的,还是 Nginx 内部建立的
worker connections 1024 ;
#连接使用的网络工/ 0 模型,
#可以采用[ kqueue rtsig epoll select poll eventport ]
use epoll ;
}
http {
#===============以下是 Nginx 后端服务配置项
upstream backendserverl {
#Nginx 向后端服务器分配请求任务 的方式 , 默认为轮询,如果指定了ip hash ,就是 Hash 算法
#ip hash
#后端服务器 ip : port , 如果有多个服务节点 , 这里就配置多个
server 192.168.220.131:8080 ;
server 192.168.220.132:8080 ;
#backup 表示,这是一个备份节点 , 只有当所有节点失效后
#Nginx 才会往这个节点分配请求任务
#server 192.168.220.133:8080 backup ;
#weight , 固定权重 , 还记得我们上文提到 的加权轮询方式吧
#server 192.168.220.134:8080 weight=100;
}
}
# =========================以下是 HTTP 协议主配置
#安装 Nginx 后,在 conf 目录下除了 nginx.conf 主配置文件,还有很多模板配置文件 ,
#这里就是导入这些模板文件
include mime .types ;
#HTTP 核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式
default_type application/octet-stream;
#日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" ’ '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
#日志文件存放的位置
#access log logs/access.log main ;
#sendfile 规则开启
sendfile on ·
#指定一个连接的等待时间(单位秒),如果超过等待时间,则连接就会断掉 。注意一定要设置,否则高并发情况下会产生性能问题
keepalive_timeout 65 ;
#开启数据压缩,后文详细介绍
gzip on;
#==========================以下是一个服务实例的配置
server {
#这个代理实例的监听端口
listen 80 ;
#server_name 取个唯一的实例名都要想半天?
server_name localhost ;
#编码格式
charset utf-8 ;
#access log logs/host.access.log main;
#location 将按照规则分流满足条件的 URL o
#” location /”你可以理解为“默认分流位置” 。
location / {
#root 目录,这个 html 表示 Nginx 主安装目录下的“ html ”目录 。
root html ;
#目录中的默认展示页面
index index.html index.htm;
#location 支持正则表达式, “~” 表示匹配正则表达式
location ~ ^/business/ {
#方向代理。后文详细讲解
proxy_pass http://backendserverl;
#redirect server error pages to the static page / 50x.html
#errorpage 404 /404 . html;
error_page 500 502 503 504 /50x.html ;
location = /50x.html {
root html;
}
}
}
}
7.常用模块
1)gzip 压缩模块
#开启 gzip 压缩服务
gzip on ;
#gzip 压缩需要申请|临时内存空间,假设前提是压缩后大小是小子等于压缩前的。例如,如果原始文件大小为 10KB ,那么它超过了 8KB,所以分配的内存是 8 × 2 = 16KB;再例如,原始文件大小为 18KB,很明显 16KB 也是不够的,那么按照 8x2x2 = 32KB 的大小申请内存。如果没有设置,则默认值是申请跟原始数据相同大小的内存空间去存储 gzip 压缩结果
gzip_buffers 2 8K ;
#进行压缩的原始文件的最小值,也就是说如果原始文件小子 SKB,那么就不会进行压缩了
gzip_min_length 5K;
#gzip 压缩基子的 HTTP 协议版本,默认就是 HTTP 1.1
gzip_http_version 1.1;
# gzip 压缩级别 l~ 9 ,级别越高压缩率越大,压缩时间也就越长, CPU 越高
gzip_comp_level 5;
#需要进行 gzip 压缩的 Content-Type 的 Header 的类型。建议 JS 、 TEXT 、 css 、 XML, JSON
#格式都要进行压缩:图片就没必要了, GIF 、 JPGE 文件已经压缩得很好了 , 就算再压缩,效果也不好,而且还耗费 CPU 。
gzip_types text/HTML text/plain application/x-javascript text/css application/xml;
2)rewrite 模块
Nginx 的强大在于其对URL请求的(应用正则表达式)重写(重定位),这就是 rewrite 功能模块的作用 。Nginx 的 rewrite 功能模块依赖于 PCRE Lib
~ 区分大小写进行正则表达式匹配
~* 不区分大小写进行正则表达式匹配
!~ 区分大小写进行正则表达式不匹配
!~* 不区分大小写进行正则表达式不匹配
如: location ~* \.(jpg|gif|png|ioc|jpeg)$
Nginx 中的全局变量
• $content_length:获取 request 中 header 部分的“ Content_Length ”值 。
• $content_type : 获取 request 中 header 部分的“ Content_type ”值。
• $request_method : 请求方式,常用的有两种请求方式: POST 、 GET 。
• $remote addr : 发送请求的客户端 IP 。
• $remote_port:发送请求的客户端端口。
• $request_uri : 含有参数的完整的初始 URI 。
• $server_addr: request 到达的 server 的 IP 。
• $server_port : 请求到达的服务器的端口号 。
rewrite 语法
rewrite regex replacement flag
flag关键字
• redirect:通知客户端重定 向到 rewrtie 后面的地址 。
• permanent:通知客户端永久重定向到 rewrtie 后面的地址 。
• last : 将rewrite 后的地址重新在 server 标签中执行。
• break : 将rewrite 后的地址重新在当前的 location 标签中执行 。
3)nginx upstream_check_module健康检查模块
4) image_filter图片动态缩略模块
#不区分大小写进行正则表达式匹配
#只要满足以下表达式的请求路径,则进行图片动态缩略阁的生成
location ~* /(.+)\.(jpg|gif|png|ioc|jpeg)_(\d+)_(\d+)$ {
#将以上正则表达式第 3 个区域设置的数值传入变量“ w ”
set $w $3;
#将以上正则表达式第 4 个区域设置的数值传入变量“ h”
set $h $4;
#将 rewrite 后的地址重新在当前的 location 标签执行,以便找到原始图片
rewrite /(.+)\.(jpg|gif|png|ioc|jpeg)_(\d+)_(\d+)$ /$1.$2 break;
#按照宽度 w 和高度 h,将原始图片进行等比例缩放
image filter resize $w $h;
#设置单张原始图片的最大值为 lOMB
image_filter_buffer 10M;
#设置图片所在的根目录
root /home/nodejs/BDK/public/upload/;
}