• nginx模块解释及rewrite规则实例


    nginx
    -c:指定配置文件
    -p:指定nginx安装目录
    -t:测试配置文件是否有错误
    -s stop:强制停止Nginx服务 -s是告诉Nginx程序向正在运行的Nginx服务发送信号量,Nginx程序通过nginx.pid文件中得到master进程的ID,再向运行的master进程发送TERM信号来快速地关闭Nginx服务
    -s quit:“优雅”地停止服务,首先Nginx会关闭监听端口,停止接收新的连接,然后把目前正在处理的连接全部处理完,最后再退出进程 =kill -s SIGQUIT PID
    kill -s SIGWINCH PID:“优雅”的停止某个work进程
    -s reload:重新加载配置文件,实际上nginx会先检查新的配置文件是否有误,如果全部正确就以优雅的方式关闭,再重新启动Nginx来实现这个目的=kill -s SIGHUP PID
    -s reopen:重新打开日志文件,可以把当前的日志文件改名或转移到其他目录备份,再重新打开就会有新的日志文件产生=kill -s SIGUSER1 PID
    kill -s SIGUSER2 PID:平滑升级nginx,Nginx会将pid文件重命名,通过kill命令向旧版本的master进程发送SIGQUIT信号,优雅关闭旧版本进程,随后只有新版本的Nginx服务运行

    配置
    1.Nginx支持单进程(master)提供服务,生产都为master-worker提供服务,好处:a) master进程不会对用户提供服务,只用于管理真正提供服务的worker进程(为管理员提供命令服务,启动、停止、重载配置文件平滑升级等),master通常拥有较大权限,一般会以
    root启动,worker权限要小于或等于master权限,这样master才会完全管理worker进程,当任何一个woreker进程出现错误导致coredump时,master会启动立刻启动新的worker进程继续服务 b) 可以充分利用SMP多核架构,从而实现微观上真正的多核并发能力。一个
    worker进程可以同时处理请求数只受限于内存大小,不同worker进程之间处理并发请求时几乎没有同步锁限制,worker进程通常不会进入sleep状态,当Nginx进程数与CPU核心数相等(最好每个进程绑定在一个CPU上)时,进程间切换的代价是最小的。
    2.ssl_session_cache shared:SSL:10m;1m可以缓存大约4000个会话
    ssl_session_timeout 10m;ssl会话缓存时间 (由于ssl操作需要消耗CPU资源,所以在多处理的系统下需启动多个工作进程,而且数量不少于可用CPU的个数。最消耗CPU资源的SSL操作是SSL握手,两种方法可用降低握手操作数:第一是保持客户端长连接,
    第二是在并发的连接或者后续连接中重用SSL会话参数,也可以避免SSL握手操作)
    3.如果后端服务器返回502、504、执行超时等错误,可以定义一组upstream模块将其转发到另一台服务器上:proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://upstream_name;
    4.使用alias时,用到rewrite规则必须使用last标记。使用proxy_pass时必须使用break标记

    Rewrite:
    当文件和目录不存在时,重定向到某个php页面:if (!-e $request_filename) {rewrite ^/(.*)$ /index.php}
    多目录转成参数:abc.domian.com/sort/2 => abc.domain.com/index.php?act=sort&name=abc&id=2
    if ($host ~* (.*).domain.com) {set $sub_name $1;rewrite ^/sort//(d+)//?$ /index.php?act=sort&act=$sub_name&id=$1 last}
    目录对换:/123456/xxxx -> /xxxx?id=123456
    rewrite ^/(d+)/(.+)/ /$2?id=$1 last; ($2下的目录才是真实的目录,也就是说如果:www.domain.com/123456/test/目录会重定向到访问/test目录)
    如果客户端使用IE浏览器,则重定向到/nginx-ie目录下:
    if ($http_user_agent ~ MSIE) {rewrite ^(.*)$ /nginx-ie/$1 break;}
    禁止访问多个目录:
    location ^/(cron|templates)/ {deny all;break;}
    禁止访问以data开头的目录:
    location ~ ^/data {deny all;}
    设置某些类型文件的浏览器缓存时间:
    location ~ .*.(gif|jpg|png|swf) {expires 30d;} location ~ .*.(js|css)?$ {expires 1h;}
    将多级目录下的文件转换成一个文件/job-123-456-789.html 指向/job/123/456/789.html
    rewrite ^/job-({[0-9]+)-([0-9]+)-([0-9]).html$ /job/$1/$2/$3.html last;
    禁止访问以.sh .flv .mp4为文件名后缀的URL地址:
    location ~ .*.(sh|flv|mp4)?$ {return 403;}
    根据Referer信息防盗链:
    location ~* .(gif|jpg|png|swf)$ {valid_referers none blocked www.yourdomain.com *.domain.com;if ($invalid_refere) {rewrite ^/(.*) http://www.yourdomain.com/blocked.html;}
    允许指定的域名访问,其余的一律跳转:
    if ($host ~* ^(.*?).aaa.com$) {set $var_tz '1';} if ($host ~* 192.168.1.(.*?)$) {set $var_tz '1';} if ($host ~* ^localhost) {set $var_tz '1';} if ($var_tz !~ '1') {rewrite ^/(.*)$ http:www.aaa.com/ redirect;}
    nginx伪静态:rewrite ^(.*)/archiver/((fid|tid)-[w-]+.html)$ $1/archiver/index.php?$2 last;
    rewrite ^(.*)/forum-([0-9]+)-([0-9]+).html$ $1/forumdisplay.php?fid=$2&page=$3 last;
    rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/viewthread.php?tid=$2&extra=page%3D$4&page=$3 last;
    rewrite ^(.*)/profile-(username|uid)-(.+).html$ $1/viewpro.php?$2=$3 last;
    rewrite ^(.*)/space-(username|uid)-(.+).html$ $1/space.php?$2=$3 last;
    rewrite ^(.*)/tag-(.+).html$ $1/tag.php?name=$2 last;
    目录自动加“/”:if (-d $request_filename){rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;}
    Apache和Nginx的rewrite规则比较:
    nginx和apache的rewrite规则不同点:apache用RewriteRule替代了rewrite指令 结尾用[L]替代了last 在apache中:RewriteRule ^/([0-9]{5}).html$ /x.jsp?id=$1 [L] 在nginx中不能写成rewrite ^/([0-9]{5}).html$ /x.jsp?id=$1 last;而要写成:
    rewrite "^/([0-9]{5}).html$" /x.jsp?id=$1 last; apache中的RewriteCond对应nginx的if指令 [R]对应Nginx的redirect标记
    允许指定域名访问本站,apache规则:RewriteCond %{HTTP_HOST} !^(.*).aaa.com$ [NC] RewriteCond %{HTTP_HOST} !^192.168.1.(.*)?$ RewriteCond !^localhost$ RewriteRule ^/(.*)$ http://www.aaa.com [R,L]
    URL重写与反向代理同时进行
    Apache Rewrite规则:ProxyRequest off RewriteRule ^/news/(.*)$ http://server.domain.com/$1 [P,L] Nginx:location /news/ {proxy_pass http://server.domain.com/;}
    指定URL之外的URL进行Rewrite跳转
    Apache Rewrite规则:RewriteCond %{REQUEST_URI} !^/xiaoqu/admin/.* RewriteCond %{REQUEST_URI} !^/xiaoqu/map/.* RewriteCond %{REQUEST_URI} !^/xiaoqu/accounts/.* RewriteCond %{REQUEST_URI} !^/xiaoqu/ajax/.*
    RewriteRule ^/xiaoqu/(.*?)/(.*?)/ /xiaoqu/$2.php?name=$1 [L] Nginx规则:if ($request_uri ~* "^/xiaoqu/admin/.*") {set $var_xiaoqu_admin '1';} if ($request_uri "^/xiaoqu/map/.*") {set $var_xiaoqu_admin '1';}
    if ($request_uri ~* "^/xiaoqu/accounts/.*") {set $var_xiaoqu_admin '1';} if ($request_uri ~* "^/xiaoqu/ajax/.*") {set $var_xiaoqu_admin '1';} if ($var_xiaoqu_admin !~ '1') {rewrite ^/xiaoqu/(.*?)/(.*?)/$ /xiaoqu/$2.php?name=$1 last;}


    Nginx缓存
    原理:缓存是把URL及相关组合当作Key,用MD5算法对Key进行哈希,得到硬盘上对应的哈希目录路径,从而缓存内容保存在该目录内,清楚缓存需要第三方模块:ngx_cache_purge,可以清楚指定URL缓存
    proxy_cache 语法:proxy_cache zone_name 默认值:None 使用环境:http、server、location zone_name的值为proxy_cache_path指令创建的缓存区名称
    proxy_cache_path path keys_zone=zone_name:zone_size [inactive_time] [max_size=size] 使用环境:http 该指令用于设置缓存文件存放的路径 示例:proxy_cache_path /data/ levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g;
    proxy_cache_methods 语法:proxy_cache_methods [GET HEAD POST] 默认:GET HEAD 使用环境:http、server、location 该指令用户缓存哪些http方法
    proxy_cache_min_users:默认值1,使用环境:http、server、location 该指令用于设置缓存的最小使用次数
    proxy_cache_valid proxy_cache_valid 200 302 10m 使用环境:http、server、location 该指令设置 proxy_cache_valid any 1m:其余的状态码缓存都为1分钟
    proxy_cache_key proxy_cache_key "$host:$server_port$uri$is_args$args" 使用环境:http、server、location 该指令用来设置Web缓存的Key值,Nginx根据Key值MD5哈希存储缓存
    proxy_temp_path和proxy_cache_path必须在同一分区
    清除url缓存设置:location /purge(/.*) {allow 127.0.0.1; deny all;proxy_cache_purge cache_one $host$1$is_args$args} 然后通过web页面删除key:http://www.yourdomain.com/purge/test.gif

    fastcgi_cache
    同上,fastcgi_cache_key 127.0.0.1:9000$request_uri

    金山逍遥网中nginx配置
    user www www;
    worker_processes 8;
    error_log /data1/logs/nginx_errlog crit;
    pid /usr/local/webserver/nginx/nginx.pid;
    work_rlimit_nofile 51200;

    events
    {
    use epoll;
    worker_connections 51200;
    }

    http
    {
    include mime.type;
    default_type application/octet-stream;

    #charset utf-8;

    server_name_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    sendfile on;
    #tcp_nopush on;
    keeplive_timeout 30;
    tcp_nodelay on;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 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;

    limit_zone anti_attack $binary_remote_addr 10m;

    #允许客户端请求的最大单个字节数
    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;

    #同上 告诉Nginx保存单个用的几个Buffer及最大用多大空间
    proxy_buffers 4 32k;

    #如果系统很忙的时候可以申请更大的proxy_buffers 官方推荐*2
    proxy_busy_buffers_size 64k;

    #proxy临时缓存文件的大小
    proxy_temp_file_write_size 64k;

    #缓存
    proxy_cache test;
    proxy_cache_path /data2/proxy_cache_path levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=5m;
    proxy_cache_methods PUT,GET;

    upstream my_server_pool {
    server xx.xx.xx.1:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.2:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.3:80 weight=1 max_fails=2 fail_timeout=30s;
    }

    upstream php_server_pool {
    server xx.xx.xx.4:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.5:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.6:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.7:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.8:80 weight=1 max_fails=2 fail_timeout=30s;
    }

    upstream bbs_server_pool {
    ip_hash;
    server xx.xx.xx.9:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.10:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.11:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.12:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.13:80 weight=1 max_fails=2 fail_timeout=30s;
    }

    upstream bbs_server_pool {
    server xx.xx.xx.9:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.10:80 weight=1 max_fails=2 fail_timeout=30s;
    }

    upstream cms_server_pool {
    server xx.xx.xx.9:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.10:80 weight=1 max_fails=2 fail_timeout=30s;
    }

    upstream pic_server_pool {
    server xx.xx.xx.9:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.10:80 weight=1 max_fails=2 fail_timeout=30s;
    }

    upstream xoyohimsg_server_pool {
    server xx.xx.xx.9:80 weight=1 max_fails=2 fail_timeout=30s;
    server xx.xx.xx.10:80 weight=1 max_fails=2 fail_timeout=30s down;
    }

    server {
    listen 80;
    server_name xoyo.com
    rewrite ^/(.*) http://www.xoyo.com/ permanent;

    access_log /data/logs/xoyo.com_access.log;
    }

    #用户中心HTTPS/SSL加密
    server {
    listen 443;
    server_name my.xo.com;
    ssl on;
    ssl_certificate cert.pem;
    ssl_certificate_key cert.key;

    #1m差不多能缓存4000个用户会话
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;

    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
    proxy_pass http://php_server_pool;
    proxy_set_header Host my.xoyo.com;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    access_log /data/logs/my.xoyo.com_access.log;
    }

    #图片服务器,不同的路径访问后端不同的服务器
    server {
    listen 80;
    server_name pic.xoyo.com;

    location /cms/ {
    proxy_pass http://cms_server_pool;
    proxy_set_header Host pic.xoyo.com;
    proxy_set_header X-Forwarded-For $remote_addr;
    }

    location / {
    proxy_pass http://pic_server_pool;
    proxy_set_header Host pic.xoyo.com;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    access_log /data/local/pic.xoyo.com_access.log;
    }

    server {
    listen 80;
    server_name media.xoyo.com;

    location / {
    proxy_pass http://cms_server_pool;
    proxy_set_header Host cms.xoyo.com;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    valid_referers none blocked www.xoyo.com *.xoyo.com www.kingsoft.com;
    if ($invalid_refere) {rewrite ^/ http://www.xoyo.com;}
    access_log /data/log/media.xoyo.com_access.log;
    }

    #逍遥有聊 WEBIM产品的负载均衡,反向代理两种HTTP服务器
    server {
    listen 80;
    server_name hi.xoyo.com;

    #反向代理一款定制开发的高性能消息队列HTTP服务器
    location /recmessage.xoyo
    {
    proxy_pass http://xoyoimsg_server_pool;
    proxy_set_header Host $host;
    }

    location /
    {
    proxy_pass http://php_server_pool;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    access_log /data/hi.xoyo.com_access.log;
    }

    #论坛负载均衡,并对图片、flush、javascript、css、静态HTML进行web缓存
    server {
    listen 80;
    server_name bbs.xoyo.com *.bbs.xoyo.com

    location / {
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://bbs_server_pool;
    }

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css|html|shtml)$
    {
    proxy_cache cache_one;
    proxy_cache_valid 200 10m;
    proxy_cache_valid 304 1m;
    proxy_cache_valid 301 302 1h;
    proxy_cache_valid any 1m;
    proxy_cache_key $host$uri$is_args$args;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://bbs_server_pool;
    }

    log_format bbs '$remote_addr $host $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /data/log/bbs.xoyo.com_access.log bbs;
    }

    #论坛反向代理,限制下载速度
    server {
    listen 80;
    server_name att03.bbs.xoyo.com att02.bbs.xoyo.com att01.bbs.xoyo.com;

    location / {
    #限制下载速度为256KB/s
    limit_rate 256k;
    proxy_pass http://xx.xx.xx.19;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    access_log off;
    }

    #逍遥江湖SNS社区,管理后台定位到一台服务器,并对图片、flush、javascript、css进行web缓存区
    server {
    listen 80;
    server_name hu.xoyo.com *.ho.xoyo.com;

    location / {
    proxy_pass http://php_server_pool;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    }

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css|html|shtml)$
    {
    proxy_cache cache_one;
    proxy_cache_valid 200 10m;
    proxy_cache_valid 304 1m;
    proxy_cache_valid 301 302 1h;
    proxy_cache_valid any 1m;
    proxy_cache_key $host$uri$is_args$args;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://bbs_server_pool;
    }

    location ~ ^/admincp.php
    {
    #管理后台定位到一台服务器上
    proxy_pass http://xx.xx.xx.4;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    access_log /data/log/hu.xoyo.com_access.log;
    }
    }


    采用Nginx的Flv Stream模块搭建HTTP下载方式的Flv视频服务器
    Flv Stream模块是Nginx的可选模块,需要在编译安装Nginx服务器时,把Flv Stream模块加上,如:./configure --with-http_flv_module make && make install
    ....
    server {
    listen 80;
    server_name flv.domain.com;
    index index.shtml index.html index.htm;

    root /data0/htdocs/flv_files;

    limit_rate_after 3m;#用户下载前3m不限速,超过3m时限速为512k
    limit_rate 512k;

    location ~ .flv {
    flv;
    }
    access_log off;
    }


    HTTP核心模块指令:
    alias:路径别名 location /i/ {alias /web/test1/;}
    client_body_in_file_only 用法:client_body_in_file_only on|off 默认值:off 使用环境:http、server、location 该指令允许将一个客户端请求内容记录到一个文件中,该文件在请求完成后不会被删除
    client_body_in_single_bufffer 语法:client_body_in_single_bufffer 默认值:off 使用环境:http、server、location 该指令指定是否保持整个内容在一个单一的客户端请求缓存区中
    client_body_buffer_size 语法:client_body_buffer_size 128k;该指令指定客户端请求的缓冲区大小。如果客户端请求内容大于缓存区,将被写入临时文件
    client_body_temp_path 语法:client_body_temp_path /path 1 2; 该指令用于指定存放请求内容临时文件的目录。缓存目录最多支持3层目录
    client_body_timeout 语法:client_body_timeout 60;默认值:60 使用环境:http、server、location 该指令用于设置客户端请求内容的超时时间。如果超过这个时间,Nginx将返回"Request time out" 错误信息(http状态码408)
    client_header_buffer_size 语法:client_header_buffer_size size 默认值:1k 使用环境:http、server 该指令用于设置客户端请求的Header头缓存区大小
    client_header_timeout 默认值:60 使用环境http、server 该指令用于设置读取客户端请求Header头信息的超时时间。超过时间同上
    client_max_body_size 默认值:1m 使用环境:http、server、location 该指令用于设置允许接受的客户端请求内容的最大值,如果超过该值,返回"Request Entity Too Large"错误信息(HTTP状态码413)
    default_type 默认值:default_type text/plain 使用环境:http、server、location MIME-type是用来告诉浏览器请求的文件媒体类型
    directio 默认值off 使用环境:http、server、location 该指令用于设置一个文件大小
    error_page error_page 404 /404.html error_page 500 501 502 /50.html 如果遇到403,则跳转到url:error_page 403 http://example.com/forbidden.html error_page 400 =200 /empty.gif;如果遇到404,将状态码改为200,并且指定/empty.gif给客户端
    autoindex on;如果某个目录下没有指定的默认首页文件,则开启该指令,显示当前目录的文件列表
    internal:该指令用于设置某个location路径只能在Nginx内部使用,外部无法访问 例1: error_page 404 /404.html; location /404.html { internal; } 例2:location / {root /var/www/html;error_page 404 @40x;} location @40x {root /var/www/error/40x.html;}
    keepalive_requests 默认值:100 使用环境:http、server、location 设置一个keep-alive连接使用的次数。一次请求结束后,如果该请求的次数没有超过该值,则服务器并不立即断开连接,而是直到达到keep_timeout指令设置的时间,才关闭连接
    large_client_header_buffers 默认值:4 4k 使用环境http、server 该指令用于设置客户端请求的header头缓冲区大小,客户端请求大小不能超过这个值,否则回报“Request URI too large“(414)
    limit_except 语法:limit_except methods 默认值:no 使用环境location 该指令限制HTTP方法访问location内容 示例:limit_except GET {allow xx.xx.xx.xx/24;deny all;}
    limit_rate 使用环境:http、server、location,if in location 该指令用来限速 示例:server {if($slow) {set $limit_rate 4k;}}
    limit_rate_after 该指令可以设置一个字节数,下载的字节数大于该值时启动限速
    location ~ .php$ {
    root /web;
    index index.php index.html index.htm;
    error_page 404 502 504 @fetch;
    }
    location @fetch {
    internal;
    proxy_pass http://backend;
    break;
    }
    log_not_found 默认值:on 使用环境:http、server、location 该指令用来启用或禁用404错误日志,可以用来禁止Nginx记录找不到robots.txt和favicon.ico这类文件的错误信息
    log_subrequest 默认值:off 使用环境:http、server、location 该指令用来启动或禁止在access_log中记录类似rewrite rules、SSI requests等子请求
    open_file_cache 默认值:off 使用环境:http、server、location open_file_cache_max = 1000 inactive=20s;open_file_cache_valid 30s;open_file_cache_min_user 2;open_file_cache_errors on;(inactive缓存过期时间)
    open_file_cache_errors:该指令用于是否开启搜索文件的缓存错误
    open_file_cache_min_user:用于指定在open_file_size指令设置的时间内文件的最小使用数,如果打开的文件超过该数量,则文件描述符会保持缓存中的打开状态
    resolver_timeout 默认值:30 使用环境:http、server、location 该指令用于解析超时时间
    auth_busic "authon" auth_busic_user_file /path 认证文件路径
    send_timeout 默认值:60 使用
    server_tokens 默认值:on 使用环境:http、server、location 是否在错误页面或服务器Header头中输出Nginx版本号给客户端浏览器
    tcp_nodelay 默认值:on 使用环境:http、server、location 允许或使用套接字选项TCP_NODELAY,适用于keep-alive连接

    FCGI模块
    location / {fastcgi_pass localhost:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME scripts/php$fastcgi_script_name;...}
    fastcgi_hide_header 语法:fastcgi_hide_header name 使用环境:http、server、location 默认情况下Nginx不会将FastCGI进程返回的"status"、"X-Accel.."Header头信息返回给客户端。该指令用来隐藏其他的header头信息
    fastcgi_redirect_errors 默认off,用于开启或关闭FastCGI错误重定向

    Gzip模块
    gzip on;
    gzip_comp_level 4;(压缩等级)
    gzip_min_length 1k;(压缩最小字节)
    gzip_buffers 4 16k;(设置几个单位的缓存用于压缩结果数据流)
    gzip_http_version:识别http协议版本,可能早期的http协议或浏览器不支持gzip,压缩会乱码
    gzip_proxied any;(默认值:off Nginx作为反向代理的时候启用,开启或关闭后端服务器返回的结果,匹配的前提是后端服务器必须返回包含"Via"的header头。off——关闭所有代理结果数据的压缩,
    expired——启用压缩,如果header头中包含"Expires"头信息,no-cache——启用压缩,如果header中有"Cache-Control:no-cache"头信息,no-store如果header中有"Cache-Control:no-store"头信息,private——启用压缩,
    如果header中有"Cache-Control:private"头信息,no_last_modified——启用压缩,如果header中不包含"Last-Modified"头信息,auth——启用压缩,如果header中包含"Authorization"头信息,any——无条件压缩)
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    server_tokens off;

    HTTP Header模块:
    用来设置Nginx返回网页内容给用户时,附加的Header头信息
    add_header:默认值:none 使用环境:http、server、location 当HTTP应答状态码为200、204、301、302、304的时候,增加指定的header头,其中header头可以是变量

    HTTP Limit Zone模块
    改模块用于针对条件,进行会话的并发连接数控制,例如限制每个IP的并发连接数等。 http {limit_zone one $binary_remote_addr 10m; server {locatiion /download/ {limit_conn one 1;}}}
    limit_zone 使用环境http limit_zone zone_name $variable_memory_max_size 定义了一个数据区,其中记录会话状态信息。$variable定义判断会话的变量,mem_max_size定义内存记录区的总容量
    limit_zone one $binary_remote_addr 10m;定义一个叫"one"的记录区,总容量10MB,以变量$binary_remote_addr作为会话的判断基准(即一个地址一个会话) $binary_remote_addr和$remote_addr比较:$remote_addr的长度为7到15bytes,会话信息
    的长度为32或64bytes。而$binary_remote_addr的长度为4bytes,会话信息的长度为32bytes,记录区为1MB时,大约可以记录32000个会话信息
    limit_conn:使用环境http、server、location 用于指定一个会话最大并发数。当超过指定的最大并发数时,服务器返回"Service unavailable"503
    limit_zone one $binary_remote_addr 10m; server {location /download/ {limit_conn one 1;}}

    HTTP Limit Req模块
    该模块允许你对Session会话、单个客户端IP地址,限制指定单位时间内的并发数,可以在一定程度减少DOS攻击
    http {limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;... server {... location /search/ {limit_req zone=one burst=5;} }
    注释:为Session会话分配了一个名为one的10MB内存存储区,限制了每秒只接受一个IP的一次请求。这里使用变量$binary_remote_addr代替了$remote_addr,可以为每个会话减少64字节的内存空间,从而使1MB内存可以大概存储16000个会话状态(r/s:读请求/秒,r/m:读请求/分)

    PV:页面一天点击量(用户每刷新一次就统计) UV:每个客户端一天计为1次 VV:访问次数,是指统计时段内所有访客的PV总和
    根据访问IP统计UV:awk '{print $1}' access.log|sort |uniq -c |wc -l
    统计访问URL统计PV:awk '{print $7}' access.log|wc-l
    查询访问最频繁的URL:awk '{print $7}' access.log |sort |uniq -c |sort -n -k1 -r

  • 相关阅读:
    Ceph纠删码编码机制
    Vmware error:无法获得 VMCI 驱动程序的版本: 句柄无效。
    Virtual Box 安装过程(卸载Vmware后)
    解决安卓SDK更新dl-ssl.google.com无法连接的方法
    《中文核心期刊要目总览(2014年版)》——计算机、自动化类
    2014中国科技核心期刊(中国科技论文统计源期刊)名录——计算机类
    计算机专业方面的期刊
    Office 中的各种小tips(更新中)
    博客园添加背景音乐
    jmeter定时器
  • 原文地址:https://www.cnblogs.com/qinghe123/p/8134627.html
Copyright © 2020-2023  润新知