nginx的部署学习

使用环境:CentOS,准备好需要的源码包,这里使用包编译如下:

zlib-1.2.11.tar.gz,pcre-8.39.tar.gz,openssl-1.0.2k.tar.gz 

#NGINX编译安装不需要单独编译每个依赖包,记住解包路径即可,这里使用/usr/local/src/

nginx-1.10.2.tar.gz:./configure --prefix=/usr/local/nginx-1.10.2 

--with-zlib=/usr/local/src/zlib-1.2.11

--with-pcre=/usr/local/src/pcre-8.39

--with-openssl=/usr/local/src/openssl-1.0.2k

--with-debug


#使用对应模块用with,禁用为without,根据实际引入模块([链接]模块介绍),蓝色为个人常用模块


# 配置邮件模块:

--with-mail                          该选项用于启用Mail模块,该模块默认没有被激活
--with-mail_ssl_module          为了代理任何一种类型的使用SSL/TLS的Mail,激活该模块
--without-mail_pop3_module  在启用Mail模块后,单独地禁用pop3模块

--without-mail_imap_module  在启用Mail模块后,单独地禁用imap模块
--without-mail_smtp_module   在启用Mail模块后,单独地禁用smtp模块


#完全禁用http模块:--without--http 

--with-http_ssl_module      如果需要对流量进行加密,可以使用该选项,在URLs中开始部分将会是https(需要OpenSSL库)
--with-http_realip_module  如果你的Nginx在七层负载均衡器或者是其他设备之后,它们将http头中的客户端IP地址传递,那么你将会需要启用这个模块。在多个客户处于一个IP地址的情况下使用
--with-http_addition_module 这个模块作为输出过滤器,使你能够在请求经过一个location前或者后时在该location本身添加内容
--with-http_xslt_module    该模块用于处理XML响应转换,基于一个或者多个XSLT格式(需要libxml2和libxslt库)
--with-http_image_filter_module  该模块被作为图像过滤器使用,在将图形投递到客户之前进行处理(需要libgd库)
--with-http_geoip_module    使用该模块,能够设置各种变量以便在配置文件中区段使用,基于地理位置查找客户端IP地址(需要MaxMfind GeoIP库和相应的预编译数据库文件)
--with-http_sub_module      该模块实现了替代过滤,在响应中用一个字符串替代另一个字符串
--with-http_dav_module      启用这个模块将激活使用WebDAV的配置指令。注意:这个模块也只在有需要使用的基础上启用,如果配置不正确,它将带来安全问题。
--with-http_flv_module      如果需要提供Flash流媒体视频文件,那么该模块将会提供伪流媒体
--with-http_mp4_module      这个模块支持H.264/AAC文件伪流媒体
--with-http_gzip_module     当被调用的资源没有.gz结尾格式的文件时,如果想支持发送预压缩版本的静态文件,那么使用该模块
--with-http_gunzio_module   对应不支持gzip编码的客户,该模块用于为客户解压缩预压缩内容
--with-http_random_index_module 如果你想提供从一个目录中随机选择文件的索引文件,那么这个模块需要被激活
--with-http_secure_link_module  该模块提供了一个机制,它会将一个哈希值链接到一个URL中,因此,只有那些使用正确的密码能够计算链接
--with-http_stub_status_module  启用这个模块后会收集Nginx自身的状态信息。输出的状态信息可以使用RRDtool或类似的东西来绘制成图

--with-stream        用于一般的TCP代理和负载均衡



编译nginx后,如果需要添加新的参数,又不想重新安装,可以使用以下方法:

①执行nginx -V出现nginx版本号和之前的编译参数。

②使用对应的源码包然后用原有的编译参数再添加新的需要的编译参数执行./configure,然后make。

③不出现报错的话再源码包的objs目录下会出现加入新参数的nginx,备份原来的nginx然后覆盖。

④使用nginx -t测试新版本是否符合conf语法



nginx的主配置文件在nginx.conf,建议配置前先备份一份nginx.conf.default

nginx.conf在配置块中有对应的层级关系,"{}"花括号要成对出现,以及注意配置指令后需要分号";"


[主配置]
#定义nginx运行的用户和用户组
user    nginx  nginx;
#nginx进程数[小于CPU总核数的值或auto]
worker_process    auto;
#nginx进程最多打开文件符数量[与系统ulimit的值挂钩,大于ulimit无效]
worker_rlimit_nofile    65535;
#错误日志位置和需要记录的错误等级[ debug < info < notice < warn < error < crit]
error_log    /path    notice;
#pid文件位置
pid    /path;

events
{
    #工作模式选择,一般选择epoll,其他模式可以自行选择[ kqueue | rtsig | poll | select 等]
    use    epoll;
    #nginx最大连接数[maxclients=worker_process*worker_connections]
    worker_connections    65535;
}

[HTTP配置]
http
{
    #文件类型映射
    include    mime.types;
    #默认文件类型
    default_type    application/octet-stream;
    #默认编码
    charset    utf-8;
    #关闭显示nginx版本号
    server_tokens     off;
    #启用目录列表访问[用于下载服务器时]
    autoindex    on;
   
    [日志]
    #设置日志   日志名   日志格式
    log_format    main    '$remote_addr $remote_user [$time_local] "$requeset" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    #日志格式:$remote_addr和$http_x_forwarded_for 客户端ip;$remote_user 客户端用户名称;$time_local 访问时间和时区;$request 请求url和协议;$status请求状态;$body_bytes_sent 客户端文件body大小;$http_referer 从哪个链点到达请求页;$http_user_agent 客户端浏览器头
    #访问日志记录位置,使用的日志格式,缓冲大小可以不加 [off关闭日志]
    access_log    /path    main    buffer=8k;
   
    [传输与缓冲]
    #连接超时时间
    keepalive_timeout    60;
   #客户端响应超时时间
    send_timeout    15;
    #数据包中发送所有http响应文件
    tcp_nopush    on;
    #分段发送,不缓存数据
    tcp_nodelay    on;
    #下载等对服务器磁盘负载高的off[可存在http,server,location中起不同位置的配置]
    sendfile    on;
    #以下参数按照需求优化
    #服务器名字hash表大小[虚拟主机多的时候才需要调整]
    server_names_hash_bucket_size    128;
    #服务器接受头文件大小限制
    client_header_buffer_size    16k;
    #服务器接受表单提交,文件上传的buffer大小设置
    client_body_buffer_size    32k;
    #服务器可接受用户请求body大小
    client_max_body_size    8m;
    #处理从用户来的大文件头请求的缓存的最大数量和大小
    large_client_header_buffers    4  64k;
    #请求头文件超时时间
    client_head_timeout    10;
    #请求主体文件超时时间
    client_body_timeout    10;
    #关闭不响应的客户端连接
    reset_timeout_connection    on;

    [gzip压缩  ngx_http_gzip_static_module模块]
    #启用gzip压缩
    gzip    on;
    #文件压缩的最小大小[过小的文件启用压缩浪费资源]
    gzip_min_length    1k;
    #设置压缩缓冲
    gzip_buffers    4  16k;
    #压缩等级[可选1-9,9压缩最高,节约单宽但是CPU消耗大,一般4或5]
    gzip_comp_level    5;
    #gzip版本[默认1.1]
    gzip_http_version    1.0
    #IE6版本不使用压缩
    gzip_disable    "MSIE [1-6]\.(?!.*SV1)";
    #启用gzip的类型[默认自带text/html]
    gzip_types    text/plain  text/css  text/xml  text/javascript  image/gif  image/jpeg  application/x-javascript   application/xml;
    #根据请求头文件包含关键字启用压缩[ expired | no-cache | no-store | private | no_last_modified | no_etag | auth ],off不启用,any为一直启用
    gzip_proxied    expired  no-cache  no-store  private  auth;
    #前端缓存服务器缓存经过压缩的页面
    gzip_vary    on;

    [负载均衡  ngx_http_upstream_module模块]
    #在虚拟主机配置里介绍负载均衡的调用,这里介绍不同的负载均衡策略
    #先定义负载均衡服务器列,命名这个列的名称
    upstream    ip_hash[ip_hash策略]
    {
        #根据ip的hash结果分配,不同ip访问固定服务器
        ip_hash;
        #对应不同的服务器ip或端口[也可以使用域名或socket],下同
        server    ip:port;
        server    ip:port;
        .......       
    }
    upstream    weight[权重策略]
    {
        #根据weight值来分配,weight值越高越容易被访问到
         server    ip:port  weight=10;
         server    ip:port  weight=5;
         ......
    }
   #server可以携带的参数[ fail_timeout 请求失败后暂停服务时间,max_fails 允许最大请求失败次数,和down或backup(down为不参与负载均衡;backup为其他服务器均繁忙时才会被访问,不可共存)]
    server    ip:port  max_fail=2  fail_timeout=30;

    [反向代理  ngx_http_proxy_module模块]
   #代理连接超时时间
    proxy_connect_timeout    5;
   #代理发送超时时间
    proxy_send_timeout    5;
   #代理接收超时时间
    proxy_read_timeout    5;
   #代理保存头信息缓冲区大小
    proxy_buffer_size    16k;
   #代理缓冲区
    proxy_buffers    4    32k;
   #繁忙时缓冲区大小
    proxy_busy_buffers_size    64k;
   #代理缓存文件夹大小  
    proxy_temp_file_write_size    64k;
   #代理缓存目录[levels 设置缓存目录层次;keys_zone 设置缓存名和共享内存大小;inactive 指定时间内无人访问则清除;max_size 最大缓存空间]
    proxy_cache_path    /path  levels=1:2  keys_zone=cache_one:500m  inactive=1d  max_size=1g;
   #代理临时缓存文件路径[与目录同一分区]
    proxy_temp_path    /path

    [虚拟主机配置]
    server
    {
        #监听端口
        listen    80;
        #站点对应域名
        server_name    hostname;

        [location配置]
       #使用location对url进行匹配后执行对应操作
        location / 
        {
             #访问路径[相对上面nginx路径,下同]
             root    html;
             #首页文件[按照顺序检索,下同]
             index    index.html index.htm;
        }
        #将php文件转发给fastCGI处理[本地php];
        location ~ \.php$
        {
            root    /path;
            #转发给对应端口处理,php-fpm使用9000端口
            fastcgi_pass    127.0.0.1:9000;
            #php首页文件
            fastcgi_index    index.php;
            #调整解析的文件位置
            fastcgi_param    SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            #读取fastcgi设置文件
            include    fastcgi_params;
        }
        #如果需要nginx处理静态类型文件
       location ~ .*\.(html | htm | gif | jpg | jpeg | bmp | png | ico | txt | js | css )$
        {
            root    /path;
            #设置缓存时间(d为天数,h为小时数)
           expires    10d;
        }
        #定义错误返回页,错误代码,路径
        error_page    404    /404.html;
        error_page    500 502 503 504    /50x.html;
        location = /50x.html
        {
            root    /path;
        }
        #禁止访问.ht页面
        location ~ /\.ht
        {
            #拒绝所有[白名单设置用allow]
            deny    all;
        }
        #负载均衡的调用,这里匹配url为/页面
        location /
        {
            proxy_pass    http://负载均衡列表名;
            #设置后端服务器获取用户真实ip;
            proxy_set_header    Host  $host;
            proxy_set_header    X-Real-IP  $remote_addr;
            proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
     }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值