`
mcj8089
  • 浏览: 193626 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nginx学习笔记

    博客分类:
  • Java
阅读更多
一、安装nginx 
 

    
    1、在nginx官方网站下载一个包,下载地址是: http://nginx.org/download/nginx-1.4.2.tar.gz 
    2、WinSCP(ftp上传工具).exe FTP 上传工具上传达到CentOS中 
    3、我是先建一个目录,把要用的到的安装包放到一起. 
        #mkdir /home/ 
        #tar zxf nginx-1.4.1.tar.gz 
        #cd nginx-1.4.1 
    4、安装pcre开发包 
        #yum install -y pcre-devel 
    5、如果安装出现在下面的错误是缺少编译环境。安装编译源码所需的工具和库 
        ./configure: error: C compiler cc is not found 
        #yum install gcc gcc-c++ ncurses-devel perl 
    6、安装cmake,从http://www.cmake.org下载源码并编译安装 
        #yum -y install make gcc gcc-c++ ncurses-devel 
        #yum -y install zlib zlib-devel 
    7、如果需要ssl功能需要openssl库 
        #yum -y install openssl openssl--devel 
    8、安装nginx 
        #cd nginx-1.4.1 
        #./configure --prefix=/opt/nginx 
        #make 
        #make install 
     9、检查nginx的配置文件是否争取(假如修改过配置文件)
          #nginx -t
    10、启动服务 
        #/opt/nginx/sbin/nginx  -c /opt/nginx/conf/nginx.conf 
    11、停止服务 
         #/opt/nginx/sbin/nginx -s stop 
    12、查看端口占用情况 
        #netstat -tunlp 
    13、如果其它机器无法访问,解决方法如下: 
        #/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 
        然后保存: 
        #/etc/rc.d/init.d/iptables save 
        重启防火墙 
        #/etc/init.d/iptables restart
 
 
二、日志文件的配置与切割
 

 
    1. 定义日志格式,默认combined

# log_format formatName formaPattern
 
    2. 指定日志文件存放路径
 
        # access_log savePath logFormat
 
    3. 例子
 
        log_format weblog '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" $http_x_forwarded_for';
        access_log /data/wslogs/1987.name_access.log weblog;
 
    4. 参数含义
  • $remote_addr 和 $http_x_forwarded_for:记录客户端的ip地址。
  •  
  • $remote_user:记录客户端用户名称。
  •  
  • $time_local:记录访问时间与时区。
  •  
  • $request:记录请求的URL与HTTP协议。
  •  
  • $status:记录请求状态;成功是200。
  •  
  • $body_bytes_sent:记录发送给客户端文件主体内容大小。
  •  
  • $http_referer:记录从那个页面链接访问过来的。
  •  
  • $http_user_agent:记录客户端浏览器的相关信息。
    5. 切割:
  • 就是把log文件用MV命令剪切到另一个文件,
  • 然后再kill -user1重启nginx,在重新生成nginx日志。
  • 这样写一段脚本,就可以把log文件每天存储一份了
 
三、信号控制
 

  •    TERM、INT    快速关闭
  •    QUIT    从容关闭
  •    HUP    平滑关闭,重新加载配置文件
  •    USER1    重新打开日志文件,在切割日志时用途较大
  •    USER2    平滑升级可执行程序
  •    WINCH    从容关闭工作进程
 
四、HTTP缓存


    
    1. 相关指令集
  • proxy_cache zone_name,该指令用于设置哪个缓存区将被使用,zone_name的值为proxy_cache_path指令创建的缓存区名称
  • proxy_cache_path  设置缓存文件存放路径,只能在http标签内配置
  • proxy_cache_methods [GET POST HEAD] 设置缓存哪些HTTP方法,默认GET/HEAD
  • proxy_cache_min_uses number 设置缓存的最小使用次数,默认1
  • proxy_cache_key line 设置web缓存的KEY值,如proxy_cache_key "$host:$server_port$uir$is_args$args"
  • proxy_cache_valid code time 对不同返回状态吗设置不同的缓存时间,如proxy_cache_valid 200 302 10m
proxy_cache_path /data/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g
       
levels指定缓存空间有两层hash目录,第一层目录为一个字母,第二层为2个字母,类似data/cache/c/29/sd8923hsajdlfjaosdcjiajsdoij999;keys_zone参数用来为这个缓存区起名,500m指定缓存空间大小为500M;inactive的1d指如果缓存数据在1天内没有被访问,将被删除;max_size的30g是指硬盘缓存空间为30GB.
 
 
五、负载均衡与反向代理


 
    1. Http的Upstream模块
  • ip_hash: 让同一IP一直访问同一台机器,保证session正常使用
upstream stream_name {
    ip_hash;
    server 192.168.1.12:8080
    server 192.168.1.15:80
}
  • server参数
        weight    --权重越高,被分配到的客户端请求数越多
        max_fails    --在参数fail_timeout指定的时间内请求失败的次数(404除外)
        fail_timeout    --在max_fails次失败后,暂停的时间
        down    --标记服务器永久离线,适用于ip_hash
        backup    --仅在非backup服务器全部宕机或繁忙的时候才启用
 
 
六、URL重写Rewrite


 
    1. 标记
  • last,表示完成rewrite。使用alias时必须用
  • break,本条规则匹配完成后,终止匹配,不再匹配后面的规则。使用proxy_pass时必须用
  • redirect,返回302临时重定向,浏览器地址栏会显示跳转后的URL地址
  • permanent,返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
   
    2. 重定向URL末尾加?将不会把参数附加到URL后面,否则自动附加参数
    3. 花括号的使用{}
 
    如果在正则中使用了花括号,那么这条正则要用双引号引起来。
 
    rewrite "/image/([0-9]{2})" /image/$1.png;
 
    4. 实例
    
    a. 文件或目录不存在时,重定向到指定页面
    
    if(!-e $request_filename){
        rewrite ^/(.*)$ /index.jsp last;
    }
 
    b. 如果是IE浏览器,重定向到IE目录
 
            if($http_user_agent ~ MSIE){
                rewrite ^(.*)$ /IE/$1 break;
            }
 
    c. 设置文件缓存时间
 
            location ~ .*\.(gif|png|jpg|bmp|swf)${
                expires 30d;
            }
            location ~ .*\.(js|css)${
                expires 1h;
            }
 
    d. 示例代码如下:
 
http{
    proxy_temp_path /data0/proxy_temp_path ;
   #设置Web缓存区名称为cache_one,内存缓存空间大小为500M,自动清除超过1天没有被  
   #访问的缓存数据,硬盘缓存空间大小为30G
    proxy_cache_path /data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g ;
    server{
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
      #使用Web缓存区cache_one
      proxy_cache cache_one ;
      #对不同HTTP状态码缓存设置不同的缓存时间
      proxy_cache_valid 200 304 12h ;
      proxy_cache_valid 301 302 1m ;
      proxy_cache_valid any 1m ;
      #设置Web缓存的Key值,Nginx根据Key值md5哈希存储缓存,这里根据"域名,URI,
      #参数"组合成Key
      proxy_cache_key $host$uri$is_args$args;
        }

    #用于清除缓存,假设一个URL为http://my.domain.com/test.gif,通过访问
    #http://my.domain.com/purge/test.gif可以清除该URL的缓存
    location ~ /purge(/.*) {
      #设置只允许指定的IP或IP段才可以清除URL缓存
      allow 127.0.0.1 ;
      allow 192.168.0.0/16 ;
      deny all ;
      proxy_cache_purge cache_one $host$1$is_args$args ;
        }
    }
}
 
 
七、常用配置参数


 
    # 允许客户端请求的最大的单个文件字节数
    client_max_body_size 300m;
 
    # 缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
    client_body_buffer_size 128k;
 
    # 跟后端服务器连接的超时时间,发起握手等候响应超时时间
    proxy_connect_timeout 600;
 
    # 连接成功后,等候后端服务器响应时间,其实已经进入后端的排队之中等候处理
    proxy_read_timeout 600;
 
    # 后端服务器数据回传时间,就是在规定时间之内后端服务器必须传完所有数据
    proxy_send_timeout 600;
 
    # 代理请求缓存区,这个缓存区会保存用户的头信息以供Nginx进行规则处理,一般只要能保存下头信息即可
    proxy_buffer_size 16k;
 
    # 临时缓存文件大小
    proxy_temp_file_write_size 64k;
 
    # 对网页文件、css、JS、XML等启动gzip压缩,减少数据传输量,提高访问速度
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
 

八、安装第三方模块



 
    1. 安装第三方模块的时候需要覆盖原来nginx文件,代码如下:
    

 

    ./configure  --prefix/nginx安装目录  --add-module=/第三方模块的目录

 

分享到:
评论

相关推荐

    nginx学习笔记(软件+学习笔记)

    nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) ...

    nginx学习笔记.zip

    **Nginx学习笔记概述** Nginx是一款高性能的HTTP和反向代理服务器,也是一款邮件代理服务器。它以其稳定性、高性能以及丰富的模块配置而受到广泛赞誉,常用于网站的负载均衡、静态文件处理和SSL加密等场景。本学习...

    Nginx学习笔记.zip

    这个“Nginx学习笔记.zip”压缩包文件包含了一系列关于Nginx的教程资源,分别命名为“第1节课”到“第5节课”,暗示着一个逐步深入的学习过程。 在第一节课中,我们通常会了解Nginx的基本概念和安装步骤。Nginx的...

    5Nginx学习笔记1

    Nginx学习笔记1 Nginx是当前使用最广泛的Web服务器之一,它提供了强大的服务器功能和灵活的配置方式。本文档将介绍Nginx的基本概念、安装过程、配置方法和常见问题解决方案。 一、Nginx的基本概念 Nginx是一个...

    nginx学习笔记

    ### Nginx 学习笔记 #### Nginx 集群与分布式服务架构 在当前互联网技术高速发展的背景下,单台服务器已经无法满足日益增长的业务需求。为了解决这一问题,分布式服务架构应运而生。分布式服务架构通过将服务部署...

    nginx学习笔记.docx

    ### Nginx 学习笔记知识点总结 #### 一、Nginx 简介及安装 **Nginx** 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强,...

    nginx学习笔记及相关资料

    "nginx学习笔记及相关资料"这个压缩包中可能包含了关于Nginx的配置示例、教程文档、实战案例等,帮助学习者深入理解Nginx的工作原理,掌握配置和管理技巧,提升解决实际问题的能力。 总之,Nginx是一个强大且灵活的...

    nginx 学习笔记实用知识库分享知识分享

    "nginx 学习笔记实用知识库分享知识分享" 以下是从给定的文件中生成的相关知识点: Nginx 介绍 Nginx 是一个自由的、开源的、高性能的 HTTP 服务器和反向代理服务器,使用 C 语言编写,提供了高性能、可靠性和可...

    《Nginx学习笔记系列》.pdf

    《Nginx学习笔记系列》.pdf

    Nginx学习笔记.md

    这是我自学nginx的学习笔记,上传只是为了更好的督促自己学习,如果你也有同感,加入一起学习吧。

    nginx学习笔记1

    安装 和使用安装常用命令配置文件nginx.conf配置文件三部分组成:全局块,event块,http块全局块:从配置文件开始到events块之间的内容,主要设

    我的学习笔记Nginx

    Nginx学习笔记

    Nginx学习笔记之事件驱动框架处理流程

    Nginx对请求的处理是通过事件触发的,模块作为事件消费者,只能被事件收集、分发器调用。在Nginx中,接收到一个请求时,不会产生一个单独的进程来处理该请求,而是由事件收集、分发器(进程)调用某个模块,由模块处理...

    Ngnix学习笔记(全网最新)

    《Nginx学习笔记(全网最新)》是你掌握这一强大工具的最佳指南。无论你是初学者还是有经验的开发者,这本学习笔记将带你深入探索Nginx的核心功能和高级特性,帮助你快速上手并优化你的Web应用。 在这里,你将学到...

    Nginx完整学习笔记.doc

    Nginx完整学习笔记 Nginx 是一个功能强大、灵活、可扩展的 Web 服务器,以下是关于 Nginx 的详细知识点: 安装与部署 Nginx 依赖于 pcre 库,因此在安装 Nginx 之前需要先安装 pcre 库。使用 yum 安装 pcre 和 ...

    《nginx源码学习笔记》.pdf

    《nginx源码学习笔记》.pdf

Global site tag (gtag.js) - Google Analytics