码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx配置详情-2

时间:2018-11-22 21:04:35      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:通配符   字符   length   cache   测试   内置变量   比较   默认页面   正则表达式   

http段的配置:

server{
    listen [端口]----监听所有地址的指定端口;
        [IP地址:端口]---指定地址的指定端口
        [unix:socket]---指定的套接字文件上
        [default_server]:定义此server为http中默认server,如果所有的
        server中没有任何一个listen使用此参数,那么第一个server及为默认server

    rcvbuf=值:接受缓冲大小

    sndbuf=值:发送缓冲大小

    ssl:https server

    server_name  [主机名]可跟多个主机名,当nginx收到一个请求时,会取出其首部的
        Host的值,而后跟众server_name进行比较,名称中可以使用通配符!
        比较方式:
            1 先做精确匹配 -- www.dk.com
            2 左侧通配符匹配 --*.dk.com
            3 右侧通配符匹配 --www.*
            4 正则表达式匹配(通常以~开头)
              ~^.*\.dk\.com  
            \d---表示[0--9]       
    &server_name_hash_bucket_size 32|64|128;      
    为了实现快速主机查找,nginx使用hash表来保存主机名;

    root [定义web资源路径]:
    用于指定请求的根文档目录

    bacjlog=n  排队等候队列

    tcp_nodelay on | off;  
    在keepalived模式下的连接是否启用TCP_NODELAY选项  
    当为off时,延迟发送,合并多个请求后再发送  
    默认On时,不延迟发送可用于:http,server,location

    sendfile on|off[默认off应该启用]
    是否启用sendfile功能,高效传输文件模式

    sendfile: 设置为on表示启动高效传输文件的模式。
    sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据。   
    如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,
    用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,
    再用write函数把数据从用户空间的buffer写入到内核的buffer,
    最后到tcp socket。开启这个参数后可以让数据不用经过用户buffer。

    server_tokens [on|off];
    是否在响应报文的Server首部显示nginx版本 
    可以设置在http server location中使用

    location uri/@name {
     ...........
     }
    功能:允许根据用户请求中URI来匹配指定的
    各location以进行访问配置,匹配到时,将被
    location块中的配置所处理

    =:做精确匹配
    ^~:只需要前半部分与uri匹配即可,不检查正则表达式
    ~:做正则表达式模式匹配,匹配区分字符大小写
    ~*:做正则表达式模式匹配。忽略大小写
    不带符号:匹配起始于此uri的所有的uri 

    匹配优先级:
        1 字符字面量--字符精确匹配
        2 正则表达式检索,当有多个时,将被第一个匹配
          到的处理!
        3 按字符字面量,从左开始
    注意:
    每个location中的root可以不一样!
    location中root的路径优先级要高于主配置段中的root

    alias [路径别名],只能用于location中

    index file....:定义默认页面
    可以跟多个值,自左而右进行匹配

    error_page code ...[=[response]] uri;
    当对于某个请求返回错误时,如果匹配上了error_page指令中的设定的code
    具体应用:
    error_page 404 /404.html
    如果想让返回码更改 使用 404 =200
    http|server|location

    try_files path1 path2 uri; 
    自左至右尝试读取由path所指定路径,在第一次找到即停止并返回,如果所有path
    均不存在,则返回最后一个uri
    具体使用:
    location /images/ {      
        try_files $uri /images/default.gif <--访问的uri不存在就返回这个页面;   
    }
}

alias使用案例:
实验案例:确定资源访问目录
 1 location / {
        root /www/html;
        index index.html;

 }
 2 location ^~ /images/ {
           root /web;
    资源位置:/web/images/*            
       }
 3 location ^~ /images/<--有斜线 {
           alias /web/<--必须要有斜线
 }
    资源位置:/web/*

下面我们就通过具体操作来展示用法:

1 基本虚拟机主机选项:
[root@www20:11:51conf.d]#cat www.conf 
server {
    server_name www.a.com;
    listen 80;
    root /web/a.com;
    index index.html;
    server_tokens off;

    location /test {
        root /www/html;
    }
}
访问测试:
[root@www20:12:47conf.d]#curl http://www.a.com
<h1>test a.com page for nginx virt</h1>
[root@www20:13:27conf.d]#curl http://www.a.com/test/
<h1>test location page for nginx</h1>

查看报文头部版本信息:
[root@www20:14:32conf.d]#curl -I 172.20.23.48
HTTP/1.1 200 OK
Server: nginx/1.12.2 <--带有版本信息
[root@www20:13:51conf.d]#curl -I http://www.a.com/test/
HTTP/1.1 200 OK
Server: nginx <---没有版本信息

路径别名:

location /test1 {
    alias /mydata/html;
}
访问测试:
[root@www20:20:49nginx]#curl www.a.com/test1/
<h1>test alias for nginx</h1>

此时网页文件所在位置:
[root@www20:22:00html]#pwd
/mydata/html
[root@www20:22:05html]#cat index.html 
<h1>test alias for nginx</h1>
注意:
此配置只能用于location中

错误页面重定向:

server {
    server_name www.c.com;
    listen 80;
    index index.html;
    root /web/c.com;
    error_page 404 /404.html;
}

测试访问不存在页面:
[root@www20:29:01c.com]#curl www.c.com/dsadsa
<h1>error page for nginx c.com<h1>

更改错误响应码:
server {
    server_name www.c.com;
    listen 80;
    index index.html;
    root /web/c.com;
    error_page 404 =302 /404.html;
}

测试:
[root@www20:30:37c.com]#curl -I www.c.com/oosdosdos
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.12.2
Date: Thu, 08 Nov 2018 12:31:54 GMT
Content-Type: text/html
Content-Length: 40
Connection: keep-alive
ETag: "5be42c0d-28"

设置请求内容不存在时默认返回页面:


server {
    server_name www.c.com;
    listen 80;
    index index.html;
    root /web/c.com;
    error_page 404 =302 /404.html;
    location /test2/ {
        try_files $uri /test2/test.html;
    }
}

$uri --nginx内置变量获取你请求的uri资源

访问存在页面:
[root@www20:41:53test2]#curl www.c.com/test2/index.html
<h1>hello world</h1>
访问不存在页面:
[root@www20:42:06test2]#curl www.c.com/test2/sdsd.html
<h1>test try_files for nginx at www.c.com</h1>

location /test2/ {
    try_files $uri /test2/test.html;
    这里是不可以写成别的路径,默认返回页面一定
    要在test2目录下
}

Nginx配置详情-2

标签:通配符   字符   length   cache   测试   内置变量   比较   默认页面   正则表达式   

原文地址:http://blog.51cto.com/13878078/2320257

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!