首页 > 其他 > 详细

Nginx学习

时间:2019-12-08 13:50:27      阅读:69      评论:0      收藏:0      [点我收藏+]

一、安装

  1. 官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本

  2. 上传nginx到linux系统

  3. 安装依赖环境

    (1)安装gcc环境

      yum install gcc-c++
    

    (2)安装PCRE库,用于解析正则表达式

     yum install -y pcre pcre-devel
    

    (3)zlib压缩和解压缩依赖,

     yum install -y zlib zlib-devel
    

    (4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https

     yum install -y openssl openssl-devel
    
  4. 解压,需要注意,解压后得到的是源码,源码需要编译后才能安装

    tar -zxvf nginx-1.16.1.tar.gz
    
  5. 编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错

    mkdir /var/temp/nginx -p
    
  6. 在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件  

    ./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi

     

  7. make编译

    make
  8. 安装

    make install
  9. 进入sbin目录启动nginx

    ./nginx

二、nginx.conf 核心配置文件

  1. 设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为nobody

    user root;
    
  2. worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行

    worker_processes 1;
    
  3. nginx 日志级别debug | info | notice | warn | error | crit | alert | emerg,错误级别从左到右越来越大

  4. 设置nginx进程 pid

    pid        logs/nginx.pid;
    
  5. 设置工作模式

    events {
        # 默认使用epoll
        use epoll;
        # 每个worker允许连接的客户端最大连接数
        worker_connections  10240;
    }
    
  6. http 是指令块,针对http网络传输的一些指令配置

    http {
    }
    
  7. include 引入外部配置,提高可读性,避免单个配置文件过大

    include       mime.types;
    
  8. 设定日志格式,main为定义的格式名称,如此 access_log 就可以直接使用这个变量了
    技术分享图片

    参数名参数意义
    $remote_addr 客户端ip
    $remote_user 远程客户端用户名,一般为:’-’
    $time_local 时间和时区
    $request 请求的url以及method
    $status 响应状态码
    $body_bytes_send 响应客户端内容字节数
    $http_referer 记录用户从哪个链接跳转过来的
    $http_user_agent 用户所使用的代理,一般来时都是浏览器
    $http_x_forwarded_for 通过代理服务器来记录客户端的ip
  9. sendfile使用高效文件传输,提升传输性能。启用后才能使用tcp_nopush,是指当数据表累积一定大小后才发送,提高了效率。

    sendfile        on;
    tcp_nopush      on;
    
  10. keepalive_timeout设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗。

#keepalive_timeout  0;
keepalive_timeout  65;
  1. gzip启用压缩,html/js/css压缩后传输会更快

    gzip on;
    
  2. server可以在http指令块中设置多个虚拟主机

    • listen 监听端口
    • server_name localhost、ip、域名
    • location 请求路由映射,匹配拦截
    • root 请求位置
    • index 首页设置
        server {
                listen       88;
                server_name  localhost;
        
                location / {
                    root   html;
                    index  index.html index.htm;
                }
        }

 

三、root 与 alias

 

       假如服务器路径为:/home/imooc/files/img/face.png

 

    • root 路径完全匹配访问
      配置的时候为:

      location /imooc {
          root /home
      }
      

 

用户访问的时候请求为:url:port/imooc/files/img/face.png

 

    • alias 可以为你的路径做一个别名,对用户透明
      配置的时候为:

      location /hello {
          alias /home/imooc
      }
      

      用户访问的时候请求为:url:port/hello/files/img/face.png,如此相当于为目录imooc做一个自定义的别名。

 

四、日志分割

  1. 创建一个shell可执行文件:cut_my_log.sh,内容为:

    #!/bin/bash
    LOG_PATH="/var/log/nginx/"
    RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
    PID=/var/run/nginx/nginx.pid
    mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
    mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
    
    #向Nginx主进程发送信号,用于重新打开日志文件
    kill -USR1 `cat $PID`

     

  2. cut_my_log.sh添加可执行的权限:

    chmod +x cut_my_log.sh
    
  3. 测试日志切割后的结果:

    ./cut_my_log.sh
  4. crontab -e 编辑并且添加一行新的任务:

    59 23 * * * /usr/local/nginx/sbin/cut_my_log.sh
  5. 重启定时任务:

    service crond restart

五、Gzip压缩

  1. 编辑nginx核心配置文件

       vim /usr/local/nginx/conf/nginx.conf

  2. 添加如下代码 

    #开启gzip压缩功能,目的:提高传输效率,节约带宽
    gzip  on;
    #限制最小压缩,小于1字节的文件就不会压缩了
    gzip_min_length 1;
    #定义压缩比,文件越大,压缩越多,cpu使用就越大
    gzip_comp_level 3;
    #定义压缩文件的类型
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/json;

六、location 的匹配规则

    • 空格:默认匹配,普通匹配

      location / {
           root /home;
      }
      
    • =:精确匹配

      location = /imooc/img/face1.png {
          root /home;
      }
      
    • ~*:匹配正则表达式,不区分大小写

      #符合图片的显示
      location ~ \.(GIF|jpg|png|jpeg) {
          root /home;
      }
      
    • ~:匹配正则表达式,区分大小写

      #GIF必须大写才能匹配到
      location ~ \.(GIF|jpg|png|jpeg) {
          root /home;
      }
      
    • ^~:以某个字符路径开头

      location ^~ /imooc/img {
          root /home;
      }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Nginx学习

原文:https://www.cnblogs.com/hmxs/p/12005360.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!