安装gcc编译器
yum install -y gcc gcc-c++
安装pcre库,如果已经安装,请忽略
wget https://www.linuxprobe.com/Software/pcre-8.35.tar.gz
tar -zxvf cd pcre-8.35.tar.gz
cd pcre-8.35
./configure
make
make install
安装 openssl-devel、zlib-devel
yum install openssl-devel
yum install zlib-devel
然后安装 nginx
wget https://www.linuxprobe.com/Software/nginx-1.6.0.tar.gz
tar -zxvf nginx-1.6.0.tar.gz
cd nginx-1.6.0
./configure --prefix=/usr/local/nginx
make
make install
安装完毕之后来到指定的 nginx的安装目录,可以看到下面的文件。
然后执行下面的命令:
启动nginx
./nginx -c /usr/local/nginx/conf/nginx.conf 使用这个命令启动nginx -c表示指定conf的文件
停止nginx
./nginx -s stop 停止
./nginx -s quit 退出
./nginx -s reload 加载
执行 ps -ef|grep nginx 可以看到下面nginx的进程
分为master进程和worker进程
如果我们要温和的停止nginx,可以执行下面的命令,首先找到 nginx的master进程,比如上面的是 13220,然后执行
(何为温和的关闭呢,就是nginx首先先关闭所有的对外处理请求,然后把当前系统要处理的请求全部处理完毕之后再停止)
kill -QUIT 13220 或者是
kill -TERM 13220
nginx的核心配置文件:
nginx.conf这个文件我们可以将其简化一下,执行下面的命令简化nginx配置文件
cp ./nginx.conf ./nginx.conf_ok
cat ./nginx.conf_ok | grep -v "#" | grep -v ";" | grep -v "^$" > ./nginx.conf
执行上面的命令之后,可以看到 nginx中已经没有任何注释等干扰信息。
nginx.conf文件详解
#用户和用户组
user nobody;
#有几个工作线程,一般根据cpu的核心数量来配置
worker_processes 1;
#error_log
events {
#io网络模型
use epoll;
#允许连接数
worker_connections 1024;
}
http {
#去包含一个文件,浏览器所支持的后缀的名称
include mime.types;
#默认类型
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"';
#日志文件的输出格式,可以使用的参数见下面两行注释
#$status $body_bytes_sent "$http_referer"
#$http_user_agent" "$http_x_forwarded_for
log_format myformat '$remote_addr - $remote_user';
#日志文件存在路径
access_log logs/my.log myformat;
#下面的server是nginx当中的配置服务项,可以添加多个
server {
#监听端口
listen 80;
#域名
server_name localhost;
#gzip压缩开启
gzip on;
#以16k大小为单位,它的4倍进行内存的申请
gzip_buffers 4 16k;
#gzip压缩级别,压缩级别越高,图片等资源尺寸越小,0~9这些级别可以设置,要防止失真
gzip_comp_level 4;
#文件达到最小长度的时候不被压缩
gzip_min_length 500;
#针对那些类型的文件做压缩
gzip_types text/css text/html application/javascript;
#nginx中可以设置动静分离
location /{
root html;
index index.html index.htm;
}
location ~ \.(png|jpg|js|css|gif)$ {
root html/images;
#这里设置的动静分离是指浏览器在 5分钟 内不会再向服务器请求数据
expires 5m;
}
#下面的三个location的意思是去访问接下来的rewrite匹配的正则目录
#rewrite的路径是 /mic?file=$2.$3
#然后服务器就去找 mic 这个路径,寻找里面的file,找到显示资源,找不到 try_files到404路径的 image404.ht#ml这个文件
location /testrewrite {
#rewrite 的参数最后可以加上 break或者是last
#break表示的是 停止处理后续的rewrite指令集,并不会重新查找
#last 表示的意思是 停止处理后续的 rewrite指令,然后对当前重写的 uri在rewrite指令集上重新查
rewrite '^/testrewrite/images/([a-z]{3})/(.*)\.(png)$' /mic?file=$2.$3;
set $image_file $2;
set $image_type $3;
}
location /mic {
#设置日志保存的目录
access_log logs/mic.log;
root html;
try_files /$arg_file /image404.html;
}
location = /image404.html{
return 404 "image not found exception";
}
location = /50x.html {
}
#语法规则: location [=|~|~*|^~] /uri/ { … }
#= 开头表示精确匹配
#^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
#~ 开头表示区分大小写的正则匹配
#~* 开头表示不区分大小写的正则匹配
#!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
#/ 通用匹配,任何请求都会匹配到
location ^~ /static/{
root /webapps/ROOT/html;
}
location ~* \.(gif|jpg|css)$ {
#配置静态资源地址
root webapps/ROOT/html;
}
location /myproxy {
#配置代理
proxy_pass http://127.0.0.1:8080/;
}
}
server{
listen 80;
server_name www.zwz.com;
location /{
#资源文件配置的路径 html等内容
root /html/domain;
#访问到 /html/domain 目录下之后默认打开的是哪个文件到浏览器
index index.html index.htm;
}
}
}
nginx -t 测试成功的时候显示下面的画面:
使用下面的命令启动nginx
./nginx -c /usr/local/nginx/conf/nginx.conf
nginx中location的匹配规则:
精准匹配
location=/uri{}
优先级最高的匹配规则
一般匹配
location /uri{}
正则匹配
nginx中的匹配规则按照如下执行流程
nginx中可以配置对应地址的 rewrite指令
语法: expires 60s|m|h|d
操作步骤
· 在html目录下创建一个images文件,在该文件中放一张图片
· 修改index.html, 增加
· 修改nginx.conf配置。配置两个location实现动静分离,并且在静态文件中增加expires的缓存期限
浏览器请求 -> 告诉服务端当前浏览器可以支持压缩类型->服务端会把内容根据浏览器所支持的压缩策略去进行压缩返回
->浏览器拿到数据以后解码; 常见的压缩方式:gzip、deflate 、sdch
|
Gzip on|off 是否开启gzip压缩 Gzip_buffers 4 16k #设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存。 Gzip_comp_level[1-9] 压缩级别, 级别越高,压缩越小,但是会占用CPU资源 Gzip_disable #正则匹配UA 表示什么样的浏览器不进行gzip Gzip_min_length #开始压缩的最小长度(小于多少就不做压缩) Gzip_http_version 1.0|1.1 表示开始压缩的http协议版本 Gzip_proxied (nginx 做前端代理时启用该选项,表示无论后端服务器的headers头返回什么信息,都无条件启用压缩) Gzip_type text/pliain,application/xml 对那些类型的文件做压缩 (conf/mime.conf) Gzip_vary on|off 是否传输gzip压缩标识
|
注意点
1. 图片、mp3这样的二进制文件,没必要做压缩处理,因为这类文件压缩比很小,压缩过程会耗费CPU资源
2. 太小的文件没必要压缩,因为压缩以后会增加一些头信息,反而导致文件变大
3. Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行压缩传输,我们需要手动来配置
Proxy_pass
通过反向代理把请求转发到百度