Nginx配置段(3)

安装方法:
rpm及源码安装:
# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi
# make && make install

Tmalloc, gperftools

配置段:
nginx:
main配置段
http {
}

http配置:http core 配置一个静态web服务器
    ngx_http_core_module

    配置框架:
    http {
        upstream {
            .,..
        }

        server {
            listen IP:PORT;
            # 虚拟主机
            location /URL {
                if ...{
                    ...
                }    #类似于httpd中的<Location>,用于定义URL与本地文件系统的映射关系;
                root "/path/to/somewhere";
                ...
            }
        }       #每个server类似于httpd中的一个<VirtualHost>

        server {
            ,,.
        }
    }

        注意:与http配置相关的指令必须放在http、server、location、upstream、if块中;

    虚拟主机相关的配置:
        1、server {}
            定义一个虚拟主机;

            server {
                listen 8080;
                server_name www.zhanx.wang;
                root "/vhosts/web1";
            }

        2、listen
            监听的端口
            完整格式 :listen address[:port] [default_server] [ssl] [spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

            listen address[:port] [default_server] ssl 

            backlog=number: 指明TCP协议backlog队列的大小。默认为-1,表示不设置;
            rcvbuf=size:设定监听句柄的SO_RCVBUF参数;

            例如:
                listen 172.16.100.8:8080

        3、server_name name [...];
            后可跟多个主机名;名称还可以使用通配符和正则表达式(~);

            (1) 先做精确匹配;www.zhanxwang:
            (2) 左侧通配符匹配,例如:*.zhanx.wang;
            (3) 右侧通配符匹配,例如:www.*;
            (4) 正则表达式匹配,例如: ~^.*\.zhanx\.wang$
            (5) default_server

        4、location [=|~|~*|^~] /uri {...}
            location @name
            功能:允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理;

                =: 精确匹配检查;
                ~: 正则表达式模式匹配,区分字符大小写;
                ~*:正则表达式模式 匹配,不区分字符大小写;
                ^~:URI的前半部分匹配,不检查正则表达式;

            匹配优先级:精确匹配(=)、^~、~和~*、由不带符号的URL进行左侧匹配;

            server {
                listen 80
                server_name www.zhanx.wang
                location / {
                        root "/vhosts/web1";
                    }

                location /images/ {
                        root "vhosts/images";
                    }

                location ~*\.php${
                        fcgipass
                    }
                }

        5、root
            设置web资源路径映射;用于指明请求的URL所对应的文档的根目录路径;

            location /images/ {
                root "/web/imgs/";
            }

        6、alias path
            用于location配置段,定义路径别名 

            location /images/ {
                alias /www/pictures/;
            }
            http://www.zhanx.wang/image/a.jpg  <--- /www/pictures/a.jpg

            注意:root表示指明路径为对应location的“ /” URL;
            alias表示路径映射,即location中的URL是相对于alias所指明的路径而言;

        7、index file
            默认主页面
                index  index.php  index.html; 

        8、error_page code [...] [=code] URI | @name
            根据http状态码重定向错误页面
            error_page  404   /404.html

            =[code]: 以指定的响应码进行响应;省略code表示以新资源的响应码为响应码;

        9、try_files
            try_files path1[,path2,...] URI 

        10、基于IP地址的访问控制;
            allow IP/Network;
            deny  IP/Network;

        11、基于用户的访问控制;
            basic,digest

            auth_basic  "";
            auth_basic_user_file "/PATH/TO/PASSWORD_FILE"
                账号密码文件建议使用htpasswd来创建;

        12、https服务
            生成私钥

        13、stub_status {on|off};
            仅能用于location上下文;

            location /status {
                stub_status on;
                allow 172.16.0.0/16;
                deny  all;
            }

            结果示例:

            Active connection: 6 #当前所有处于打开状态的连接数;
            server accepts handled requests
            241    241     431
            (1)已经接受的连接
            (2)已经处理过的连接数
            (3)已经处理过的请求数:在“保持连接”模式下,请求数量可能会多于连接数量;
            Reading:0 Writing:1 Waiting:5
                Reading:正处于接收请求状态的连接数;
                Writing:请求已经接收完成,正在处理请求或发送响应的过程中的连接数;
                waiting:保持连接模式,且处于活动状态的连接数;

        14、rewrite regex replacement flag;

            例如:
                ...
                rewrite ^/images/(.*\.jpg)$ /imgs/$1 last;
                rewrite ^/imgs/(.*\.jpg)$ /images/$1 last;

                ...
                rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;
                ...

                http://www.zhanx.wang/image/a/b/c/1.jpg --> /imgs/a/b/c/1.jpg

            flag:
                last:一旦此rewrite规则重写完成后,就不再被后面其它的rewrite规则进行处理,而是由user
                    Agent重新对重写后的url再一次发起请求,并从头开始执行类似的过程
                break:一旦此rewrite规则重写完成后,由user
                    Agent 对新的URl重新发起请求,且不再会被当前location内的任何rewrite规则所检查
                redirect:以302响应码(临时重定向)返回新的URL;
                permanent:以301响应码(永久重定向)返回新的URL;

        15、if
            语法:if(condition){...}
            应用环境:server,location

            condition:
                (1) 变量名:
                    变量值为空串,或者以“0”开始,则为false;其他的均为true;
                (2) 以变量为操作数构成的比较表达式
                    可使用=,!=类似的比较操作符进行测试
                (3) 正则表达式的模式匹配操作
                    ~:区分大小写的模式匹配检查
                    ~*:不区分大小写的模式匹配检查
                    !~和!~*: 对上面两种测试取反
                (4) 测试路径为文件可能性:-f,!-f
                (5) 测试指定路径为目录的可能性:-d, !-d
                (6) 测试文件的存在性: -e, !-e
                (7) 检查文件是否有执行权限:-x,!-x

            例如:
                if ($http_user_agent ~* MSIE) {
                    rewrite ^(.*)$ /msie/$1 break;
                }

        16、防盗链
            location ~* \.(jpg|gif|jpeg|png)$ {
                valid_referer none blocked www.zhanx.wang
                if ($invalid_referer) {
                    rewrite ^/ http://www.zhanx.wang/403.html      #(盗链提示)
                }
            }

        17、定制访问日志格式
                log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                                  ‘$status $body_bytes_sent "$http_referer" ‘
                                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;

                access_log  /var/log/nginx/access.log  main;

            注意:此处可用变量为Nginx各模块内建变量;

    网络连接相关的配置:
        1、keepalive_timeout time;
            保持连接的超时时长,默认为75s;

        2、keepalive_requests #;
            在一次保持连接上允许承载最大资源请求数;

        3、keepalive_disable [msie6|safari|none]
            为指定类型的浏览器禁用长连接;

        4、tcp_nodelay on|off
            对长连接是否使用TCP_NODELAY选项;

        5、client_header_timeout time;
            读取http请求报文首部的超时时长;

        6、client_body_timeout time;
            读取http请求报文body部分的超时时长;

        7、send_timeout time;
            发送响应报文的超时时长;

原文地址:http://blog.51cto.com/zhanx/2339979

时间: 2024-11-08 22:31:55

Nginx配置段(3)的相关文章

Nginx之alias path 与root配置段的区别

alias path 与root配置段的区别 alias 适用于:location 定义路径别名,文档映射的一种机制. 在httpd中的 alias /bbs/ /lufei/root/ 示例 访问:http://www.lufei.com/bbs/index.html 实际访问:http://www.lufei.com/lufei/root/index.html 这个是以/bbs/为根. 在nginx中的示例: location /bbs/ { alias /lufei/root/; } 访问

Nginx——主配置段

nginx主配置段 帮助文档: http://nginx.org/en/docs/ngx_core_module.html 1.正常运行必备的配置 user:指定worker进程的运行身份,如组不指定,默认和用户名同名 pid /PATH/TO/PID_FILE:指定存储nginx主进程PID的文件路径 include file|mask:指明包含进来的其它配置文件片断 load_module file: 模块加载配置文件:/usr/share/nginx/modules/*.conf 指明要装

nginx 配置详解

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:京东.新浪.网易.腾讯.淘宝等. 一.event模型 传统的基于进程和线程的模型在处理并发连接的时候针对每个连接

nginx配置文件结构

nginx配置文件结构 全局参数 配置系统全局参数 如:worker_processes 工作子进程数量.error_log 错误日志路径.pid 进程ID Event 一般是配置nginx工作模式及连接的特性 如: worker_connections 1024; // 一个子进程最大允许连1024个连接 http 配置http服务器的主要段 (1)http参数部分 如连接超时时间.压缩.缓冲等 (2)upstream 负载均衡设置 (3)server 配置虚拟主机 可以包含多个locatio

nginx配置反向代理或跳转出现400问题处理记录

午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上服务器进行测试查看,打开nginx与ugwsi日志与配置,发现后端服务日志记录正常,而测试站点的访问日志有7百多M(才运行两三天没几个访问,几M的话才是正常现象),在浏览器里直接访问后端服务接口也正常没有问题(我们的服务器软件架构是微服务架构,将很多模块分拆后分别部署,前端是一个纯HTML站点,通过

nginx 配置https并自签名证书

2016-10-28 转载请注明出处:http://daodaoliang.com/ 作者: daodaoliang 版本: V1.0.1 邮箱: [email protected] 参考链接: 这里 和 这里 和 官方文档 1. 制作服务器证书 服务器CA私钥: openssl genrsa -des3 -out ca.key 2048 制作解密后的CA私钥(一般无此必要): openssl rsa -in ca.key -out ca_decrypted.key ca.crt CA根证书(公

Nginx配置与应用详解

前言 Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能.Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品.目前,包括新浪.腾讯等知名网站都已使用Nginx作为Web应用服务器.本文带来的是Nginx配置与应用详解. 基础特性 基本功能 静态资源的web服务器,能缓存打开的文件描述符 反向代理服务器,缓存.负载均衡 支持FastCGI 模块化,非DS

Varnish+Nginx 配置----Nginx

Varnish+Nginx 配置----Nginx 分类: 缓存2013-04-17 14:56 1489人阅读 评论(0) 收藏 举报 NginxVarnish缓存 最近项目引入反向代理和缓存,熟悉了一下Squid.Apache.Valish.Nginx,根据项目实际进行选择,客观来说,采用Linux系统部署最好,也没有什么难度,但实际情况必须采用Windows系统(本着方案要结合现实的原则,研究要以Windows平台为主). Nginx配置: [plain] view plaincopy #

nginx 配置禁用ip地址访问

做过面向公网WEB运维的苦逼们肯定见识过各种恶意扫描.拉取.注入等图谋不轨行为吧?对于直接对外的WEB服务器,我们可以直接通过 iptables . Nginx 的deny指令或者是程序来ban掉这些恶意请求. iptables 需要root权限配置 下面介绍使用nginx 来配置ip禁用 首选需要我们熟悉nginx 的deny指令 allow 语法:     allow address | CIDR | unix: | all; 默认值:     - 配置段:     http, server