• nginx


    一. Nginx是什么

    1. 轻量级的web服务器
    2. 反向代理服务器
    3. 电子邮件代理服务器

    二. 特性

    1、高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。
    2、内存消耗少:在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。
    3、配置文件非常简单:风格跟程序一样通俗易懂。
    4、成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
    5、支持的概率微乎其微。
    Rewrite重写规则:能够根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。
    6、内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
    7、节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
    8、稳定性高:用于反向代理,宕机

    三. 安装

    1. windows
    1)准备的软件:nginx-1.4.1.zip
    2)绿色软件,解压后无需安装
    3)在cmd下进入相应路径直接运行nginx.exe命令即可。

    2. Linux
    1)准备的软件:nginx-1.3.10.tar.gz   pcre-8.34.tar.gz(rewrite用) zlib-1.2.8.tar.gz(gzip用)
    需要预装make、gcc、openssl、openssl-devel

    2)安装pcre
    #cd /usr/local/src
    #wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz 
    #tar -zxvf pcre-8.34.tar.gz
    #cd pcre-8.34
    #./configure
    #make
    #make install

    3)安装zlib库
    #cd /usr/local/src
    #wget http://zlib.net/zlib-1.2.8.tar.gz
    #tar -zxvf zlib-1.2.8.tar.gz
    #cd zlib-1.2.8
    #./configure
    #make
    #make install

    4)编译安装nginx
    #cd /usr/local/src
    #wget http://nginx.org/download/nginx-1.4.4.tar.gz
    #tar -zxvf nginx-1.4.4.tar.gz
    #cd nginx-1.4.4

    ./configure --with-http_ssl_module --with-pcre=../pcre-8.34 --with-zlib=../zlib-1.2.8
    #make
    #make install
    默认安装在/usr/local/nginx下


    • --prefix=path    定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx
    • --sbin-path=path 设置nginx的可执行文件的路径,默认为prefix/sbin/nginx.
    • --conf-path=path  设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
    • --pid-path=path  设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认为prefix/logs/nginx.pid.
    • --error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认为prefix/logs/error.log.
    • --http-log-path=path  设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默认为prefix/logs/access.log.
    • --user=name  设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody
    • --group=name  设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户
    • --with-select_module --without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
    • --with-poll_module --without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
    • --without-http_gzip_module — 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
    • --without-http_rewrite_module  不编译重写模块。编译并运行此模块需要PCRE库支持。
    • --without-http_proxy_module — 不编译http_proxy模块。
    • --with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
    • --with-pcre=path — 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configure和make来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
    • --with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
    • --with-zlib=path —设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.5)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
    • --with-cc-opt=parameters — 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I /usr/local/include。.如需要需要增加 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
    • --with-ld-opt=parameters —设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L /usr/local/lib".

    详情参考:http://www.nginx.cn/install

    四. 常用命令

    1. 启动
    sbin/nginx   -c usr/local/nginx/conf/nginx.conf

    2. 停止
    sbin/nginx –s stop

    3. 热启动
    sbin/nginx   -s  reload

    4. 检查配置文件
    sbin/nginx   -t
    如果屏幕显示以下两行信息,说明配置文件正确:
    the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully

    五. 配置(conf/nginx.conf)

    nginx.conf文件结构

    …………
    events{
    ………………..
    }
    http{
    …………….
           server{
              ………………..
           }
    ……………….
    }
    

    1)头部
    #user nobody;
    #指定使用的用户
    worker_processes 1;
    #开启的进程数,一般设置1-5
    #error_log logs/error.log;
    #error_log logs/error.log notice;
    #error_log logs/error.log info;
    #定义错误日志,以及记录的日志等级
    #pid logs/nginx.pid;
    #定义pid文件位置


    2)events
    events {
     use ;
             #Nginx支持如下处理连接的方法(I/O复用方法),这些方法可以通过use指令指定
    # use [ kqueue | rtsig | epoll | select | poll ];


             #每个进程最大连接数(最大连接=连接数x进程数) 
    #worker_connections 51200; 
     } 


    3)http
    ①压缩:
    Nginx使用gzip压缩技术,这种技术可以压缩文件至原来的30%甚至更小。IE、FireFox、Opera、Chrome等大多浏览器都支持解析gzip过的页面.


    http{

        gzip on;
        gzip_min_length 1k;
        gzip_buffer 4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types text/plain application/x-javascript text/css application/xml;
        gzip_vary on;#accpet_encoding gzip

    }


    ②虚拟主机
    把一台运行在因特网上的服务器主机划分成多“虚拟”的主机。每个虚拟主机都具有独立的域名和Internet服务器(WWW,FTP,EMAIL)功能。利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器上、同一组Nginx进程上运行多个网站的功能。
    每段server{…}就是一个虚拟主机,如果要配置多个虚拟主机,只需配置多个server{…}段即可。
    a. 基于配置IP的虚拟主机
    server_name 192.168.8.43; 
    b. 基于配置域名的虚拟主机
    server_name sub.mygogo.com;


    ②负载均衡
    nginx的upstream目前支持4种方式的分配
    a、轮询(默认)  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    b、weight  指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    c、ip_hash  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    d、fair(第三方)  按后端服务器的响应时间来分配请求,响应时间短的优先分配。


    upstream backend{#定义一组反向代理/负载均衡后端服务器池
          server 127.0.0.1:9090 down; 
          server 192.168.1.12:8080 weight=2 ;
          server 192.168.1.13:6060 max_fails=3 fail_timeout=30s;
          server 1192.168.1.14:7070 backup;
    }
    upstream bbs_server_pool {#定义一组反向代理/负载均衡后端服务器池
       server   192.168.1.15:80 weight=1 max_fails=2 fail_timeout=30s;
       server   192.168.1.16:80 weight=1 max_fails=2 fail_timeout=30s;
       server   192.168.1.17:80 weight=1 max_fails=2 fail_timeout=30s;
       server   192.168.1.18:80 weight=1 max_fails=2 fail_timeout=30s;
     } 


    server{
       listen 80;
       server_name  bbs.yourdomain.com *.bbs.yourdomain.com;
       location /
       {
             proxy_pass http://bbs_server_pool; #用于指定反向代理的服务器池。
             proxy_set_header Host  $host; #当后端Web服务器上也配置有多个虚拟主机时,需要用该Header来区分反向代理哪个主机名。
             proxy_set_header X-Forwarded-For  $remote_addr; #如果后端Web服务器上的程序需要获取用户IP,请从该Header头获取。
       }
       access_log off;
     }


    Upstream可对后端服务器进行健康检查。
    a)    down 表示当前的server暂时不参与负载
    b)    weight 默认为1.weight越大,负载的权重就越大。
    c)    max_fails :在fail_timeout时间内对后台服务器请求失败的次数 
    d)   fail_timeout:max_fails次失败后,暂停的时间。
    e)    backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。  

  • 相关阅读:
    嵌套矩形
    Multiplication Puzzle
    animate.css在vue项目中的使用
    服务器相关知识
    webpack-cli安装和插件的安装
    新买阿里云linux服务器如何设置账号密码xshell远程登陆
    主流请求库axios库的使用
    什么是回调函数
    js------match() 方法
    cookie
  • 原文地址:https://www.cnblogs.com/waterystone/p/5085275.html
Copyright © 2020-2023  润新知