nginx高性能服务器


安装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的配置是否正确

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, 增加<img src=”图片”/>

· 修改nginx.conf配置。配置两个location实现动静分离,并且在静态文件中增加expires的缓存期限


Gzip压缩策略

浏览器请求 -> 告诉服务端当前浏览器可以支持压缩类型->服务端会把内容根据浏览器所支持的压缩策略去进行压缩返回

->浏览器拿到数据以后解码;  常见的压缩方式: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之外的内容进行压缩传输,我们需要手动来配置


Nginx反向代理

Proxy_pass

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



 

 










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值