Nginx

nginx优势

1、支持5W高并发连接
2、内存消耗少
3、成本低
4、开源

下载

官网下载http://nginx.org/en/download.html
版本nginx-1.16.0
将文件上传至CentOS中/usr/local/nginx下并解压

tar -vzxf nginx-1.16.0.tar.gz

安装

1、安装到指定目录 (安装目录:/usr/local/nginx)
默认安装到/usr/local/nginx

./configure --prefix=/usr/local/nginx

2、执行安装命令

make & make install

3、启动停止
启动:默认为NGINX_HOME/conf/nginx.conf

./usr/local/nginx/sbin/nginx

也可指定nginx.conf文件启动,启动nginx -c 表示指定

./nginx -c /usr/local/nginx/conf/nginx.conf 

发送信号的方式

kill -QUIT  进程号
kil -TERM  进程号

停止nginx

./nginx -s stop  

退出nginx

./nginx -s quit   

重新加载nginx.conf

./nginx -s reload  

安装过程中若出现以下问题
缺少pcre的依赖
缺少openssl的依赖

yum install pcre-devel
yum install openssl-devel
yum install zlib-devel

Nginx核心配置

nginx的核心配置文件中的三个段
Main、 Event 、 Http

Nginx的日志配置

access_log日志记录
nginx中两个配置日志语句:log_format 设置日志格式 ; 另外是access_log

access_log  格式
logo声明   路径及文件名 日志标识

nginx日志切割
crontab
mv access.log access.log.20171206
kill -USR1 Nginx 主进程号 让nginx重新生成一个日志文件access.log

location的语法和匹配规则

location [~|=|^~|~*] /uri {
     
}

location的匹配规则
1、精准匹配

location=/uri{}

优先级最高的匹配规则

2、一般匹配

location /uri{
}

普通匹配的优先级要高于正则匹配
如果存在多个相同的前缀的一般匹配,最终会按照最大长度来做匹配

rewrite的使用

Rewrite通过ngx_http_rewrite_module模块支持url重写、支持if判断,但不支持else
rewrite功能,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向rewrite只能放在server{},location{},if{}中,并且只对域名后边的除去传递的参数外的字符串起作用

常用指令

If 空格 (条件) {设定条件进行重写}

条件的语法:

  1. “=” 判断相等,用于字符比较
  2. “~” 正则匹配(表示区分大小写),“~*” 不区分大小写
  3. “-f -d -e” 判断是否为文件、目录、是否存在

return 指令

语法:

return code;

停止处理并返回指定状态码给客户端。

if ($request_uri ~ *\.sh ){
  return 403
}

set指令

语法:

set variable value; 

定义一个变量并复制,值可以是文本、变量或者文本变量混合体

rewrite指令

语法:

rewrite regex replacement [flag]{
    last / break/ redirect 返回临时302/ permant  返回永久302
}

last: 停止处理后续的rewrite指令集、 然后对当前重写的uri在rewrite指令集上重新查找
break: 停止处理后续的rewrite指令集 ,不会重新查找
如:

location /{
    rewrite '^/images/([a-z]{3})/(.*)\.(png|jpg)$' /csdn?file=$2.$3;
    set $image_file $2;
    set $image_type $3;
}
location /csdn{
    root html;
    try_files /$arg_file /image404.html;
}
location =/image404.html{   
    return 404 "image not found exception";
}

如上配置:
/images/ttt/test.png 会重写到/csdn?file=test.png, 匹配到 location /csdn;
通过try_files获取存在的文件并进行返回。由于文件不存在所以直接返回404错误

rewrite匹配规则

表面看rewrite和location功能有点像,都能实现跳转,主要区别在于rewrite是在同一域名内更改获取资源的路径,而location是对一类路径做控制访问或反向代理,可以proxy_pass到其他机器。通常情况下rewrite也会写在location里,它们的执行顺序是:

  1. 执行server块的rewrite指令
  2. 执行location匹配
  3. 执行选定的location中的rewrite指令如果其中某步URI被重写,则重新循环执行1-3,直到找到真实存在的文件;循环超过10次,则返回500 Internal Server Error错误

浏览器本地缓存配置及动静分离

语法:

expires 60s|m|h|d

操作步骤

  1. 在html目录下创建一个images文件,在该文件中放一张图片
  2. 修改index.html, 增加<img src=”图片”/>
  3. 修改nginx.conf配置。配置两个location实现动静分离,并且在静态文件中增加expires的缓存期限

Gzip压缩策略

浏览器请求 --> 告诉服务端当前浏览器可以支持压缩类型-->服务端会把内容根据浏览器所支持的压缩策略去进行压缩返回-->浏览器拿到数据以后解码;
常见的压缩方式:gzip、deflate 、sdch

server {
    listen 80;
    server_name localhost;
    gzip on;
    gzip_buffers 4 16k;
    gzip_comp_level 7;
    gzip_min_length 500;
    gzip_types text/css text/xml application/javascript;

    location /{
        root html;
        index index.html index.htm;
    }
    location ~ \.(png|jpg|js|css|gif)$ {
        root html/images;
        expires 5m;
    }
}

是否开启gzip压缩

Gzip on|off 

设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。
4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存。

Gzip_buffers 4 16k

压缩级别, 级别越高,压缩越小,但是会占用CPU资源

Gzip_comp_level[1-9] 

正则匹配UA 表示什么样的浏览器不进行gzip

Gzip_disable 

开始压缩的最小长度(小于多少就不做压缩)

Gzip_min_length 

表示开始压缩的http协议版本

Gzip_http_version 1.0|1.1 

nginx 做前端代理时启用该选项,表示无论后端服务器的headers头返回什么信息,都无条件启用压缩

Gzip_proxied  

对那些类型的文件做压缩 (conf/mime.conf)

Gzip_type text/pliain,application/xml  

是否传输gzip压缩标识

Gzip_vary on|off  

注意点

  1. 图片、mp3这样的二进制文件,没必要做压缩处理,因为这类文件压缩比很小,压缩过程会耗费CPU资源
  2. 太小的文件没必要压缩,因为压缩以后会增加一些头信息,反而导致文件变大
  3. Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行压缩传输,需要手动来配置

Nginx反向代理

Proxy_pass
通过反向代理把请求转发到百度

server{
    listen 80;
    server_name www.csdn.net
    location =/s {
        proxy_pass http://www.baidu.com;
    }
}

Proxy_pass 既可以是ip地址,也可以是域名,同时还可以指定端口
Proxy_pass指定的地址携带了URI,前面的配置[/s],那么这里的URI将会替换请求URI中匹配location参数部分;如上代码将会访问到http://www.baidu.com

负载均衡

upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡

Upstream常用参数介绍

语法:

server address [parameters]

其中关键字server必选。
address也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号。
parameters是可选参数,可以是如下参数:
down:表示当前server已停用
backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求
weight:表示当前server负载权重,权重越大被请求几率越大。默认是1
max_fails和fail_timeout一般会关联使用,如果某台server在fail_timeout时间内出现了max_fails次连接失败,那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它,fail_timeout默认是10s,max_fails默认是1,即默认情况是只要发生错误就认为服务器挂掉了,如果将max_fails设置为0,则表示取消这项检查。

upstream tomcatserver{
    server 192.168.241.202:8080;
    server 192.168.241.203:8080 weight=4;
}

ups支持的调度算法
ip_hash 根据ip的hash值来做转发
默认是轮询机制
权重 weight=x
fair 根据服务器的响应时间来分配请求
url_hash

示例(将202,203服务器进行负载均衡)

server{
    listen 80;
    server_name www.csdn.net
    location =/s {
        proxy_pass http://tomcatserver;
    }
}

upstream tomcatserver{
    server 192.168.241.202:8080;
    server 192.168.241.203:8080 weight=4;
}

nginx卸载

进入/usr/local/nginx/sbin安装目录执行停止mingl

cd /usr/local/nginx
./nginx -s stop

查找根目录下包含nginx的文件并删除

find / -name nginx

rm -rf /文件路径或mv命令(建议)

nginx设置了开机启动处理

chkconfig nginx off
rm -rf /etc/init.d/nginx
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容

  • Nginx访问日志(access_log)配置及信息详解 通过访问日志,可以知晓用户的地址,网站的哪些部分最受欢迎...
    起个名称好难阅读 907评论 0 0
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 2,005评论 0 9
  • 一.Nginx是什么,常用于哪些场景及其优点是什么?? 高性能web服务器,常用于 静态web服务器(动静分离)、...
    只猿阅读 1,095评论 0 0
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,013评论 21 356
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,537评论 28 53