nginxlocation重要语法讲解及实践检验

nginx常见日志收集及分析工具有rsyslog,awstats,flume,elk,storm等

1    nginx location作用:

location指令的作用是可以根据用户请求的URL来执行不同的应用,就是根据用户请求的网站地址URL匹配,匹配成功即进行相关的操作。

2    location语法

location[=|`||`*|]

[[email protected] scripts]# cd /application/nginx/conf/
[[email protected] extra]# vim www.conf
        server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
        location / {
        return 401;
        }
        location = / {
        return 402;
        }
        location /documents/ {
        return 403;
        }
        location ^~ /images/ {
        return 404;
        }
        location ~* \.(gif|jpg|jpeg)$ {
        return 500;
        }
        #access_log logs/www_access.log main;
        }
[[email protected] extra]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.6.3//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.6.3//conf/nginx.conf test is successful
[[email protected] extra]# /application/nginx/sbin/nginx -s reload

加上注释172.16.1.8      web01 www.etiantian.org

[[email protected] extra]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5      lb01
172.16.1.6      lb01
172.16.1.7      web02
172.16.1.8      web01 www.etiantian.org
172.16.1.51     de01 db01.etiantian.org
172.16.1.31     nfs01
172.16.1.41     backup
172.16.1.61     m01
[[email protected] extra]# ping www.etiantian.org -c4
PING web01 (172.16.1.8) 56(84) bytes of data.
64 bytes from web01 (172.16.1.8): icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from web01 (172.16.1.8): icmp_seq=2 ttl=64 time=0.033 ms
64 bytes from web01 (172.16.1.8): icmp_seq=3 ttl=64 time=0.030 ms
64 bytes from web01 (172.16.1.8): icmp_seq=4 ttl=64 time=0.031 ms
--- web01 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.030/0.031/0.033/0.004 ms

curl 一下

[[email protected] extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org
402
[[email protected] extra]# cp www.conf{,.test.location}

www.conf 中的402注释掉如下:

        #location = / {
        #return 402;
        #}

继续curl后出现结果如下:401

[[email protected] extra]# ../../sbin/nginx -s reload
[[email protected] extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org
401
[[email protected] extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/index.html
401
[[email protected] extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/documents/document.html
403
[[email protected] extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/images/1.gif
404
[[email protected] extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/test/1.gif
500

匹配顺序:

实战1:

配置好windowns客户端机的本地dns解析,然后输入地址:

http://www.etiantian.org/documents/    报错:403

如何让不报403?让返回结果为其他地址呢?

[[email protected] extra]# vim 
[[email protected] extra]# cat www.conf
        server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
        location / {  
        return 401;
        }
        #location = / {
        #return 402;
        #}
        location /documents/ {
        root html/www;            #403修改为指定的地址
        index index.html;         #403修改为指定的地址   
        }
        location ^~ /images/ { 
        return 404;
        }
        location ~* \.(gif|jpg|jpeg)$ {
        return 500;
        }
        #access_log logs/www_access.log main;
        }
[[email protected] extra]# ../../sbin/nginx -s reload
[[email protected] extra]# cd ../../html/www/
[[email protected] www]# mkdir documents
[[email protected] www]#cd documents/
[[email protected] www]# echo doc >index.html

windows 浏览器输入http://www.etiantian.org/documents/回车

这就说明设置成功了。

如果输入http://www.etiantian.org/就是报错默认的错误

时间: 2024-11-05 03:15:03

nginxlocation重要语法讲解及实践检验的相关文章

Markdown语法讲解及MWeb使用教程

Markdown语法讲解及MWeb使用教程 理念 Markdown想要将易读易写变为可能.可读性是最为重要的,一份公开的Markdown式的文件应该如他原来的样子一样,简单明了,不会看起来像被标签整理过,也不会看起来像被命令格式化过.Markdown语法的目的只有一个:成为大家接受的网页写作的标准格式. 提示 在编辑器中,你可以用Command+R或者Command+4来预览你正在书写的文档. 标题 例子: # 这是一个 `<h1>` 标签## 这是一个 `<h2>` 标签####

PID控制器的数字实现及C语法讲解

PID控制器的数字实现及C语法讲解 概述 为方便学习与交流,根据自己的理解与经验写了这份教程,有错误之处请各位读者予以指出,具体包含以下三部分内容: (1)  PID数字化的推导过程(实质:微积分的近似计算): (2)  程序风格介绍(程序风格来源于TI官方案例): (3)  C有关语法简述(语法会结合实例进行讲解). PID控制器的数字化 PID控制器是工业过程控制中广泛采用的一种控制器,其中,P.I.D分别为比例(Proportion).积分(Integral).微分(Differentia

Verilog HDL基础语法讲解之模块代码基本结构

Verilog HDL基础语法讲解之模块代码基本结构 ? 本章主要讲解Verilog基础语法的内容,文章以一个最简单的例子"二选一多路器"来引入一个最简单的Verilog设计文件的基本结构. 以下为本章中例子中的代码: 01????/*======================================= 02????*????file neme : mux2.v 03????*????author????:????小梅哥 04????*????Verison????:????

Android事件总线分发库EventBus3.0的简单讲解与实践

Android事件总线分发库EventBus的简单讲解与实践 导语,EventBus大家应该不陌生,EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦.反正能帮助我们快速开发,这个确实是个好东西,其实鸿洋大神已经对源码作了一个较全面的剖析了 Android EventBus源码解析 带你深入理解Ev

英语语法讲解第一课句子成分-表语

前言,本文章搬自知乎 [岑金源]: https://www.zhihu.com/people/cen-jin-yuan-42/activities 老师 表语其实属于谓语的范畴,但是不能说表语就是谓语,因为"系动词+表语"才是谓语.系动词和表语是不能分开的.没有系动词就没有表语:没有表语就没有系动词. 表语的定义跟状态型的谓语一样的.说明主语是什么或者怎么样的词语就是表语,也可以说是说明主语的情况或者说明主语状态的词语. 表语的定义不太重要,重要的是什么词语可以作表语. 在英语里面,名

Lua基础语法讲解

Lua 是什么? Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发. 设计目的 其设计目的是

oc中的点语法讲解

1.类的属性都有对应的getter和setter方法, 我们可以通过 [对象 setXxx:22]/[对象 xxx]方式调用setter方法和getter方法 但是也可以用  对象.Xxx=22 /int a=对象.xxx 这种方式编译器会自动帮我们判断是要get还是set, 当用这个点语法的时候,对象访问的并不是属性,而是去调用了get或set方法

mvc 4 razor语法讲解和使用

Razor语法的分类 @using : 引入命名空间 @model :声明强类型的数据model类型 @section :定义要实现母版页的节的信息 @RenderBody():当创建基于页面的布局时,视图的内容会和布局页合并,而新创建的视图的内容会通过布局页面的@RenderBody方法呈现在标签之间. @RenderPage :呈现一个页面.比如网页中固定的头部可以单独放在一个共享视图文件中,然后在布局也免中通过这个方法调用,例如 @RenderPage("~/Views/Shared/_H

JSON.stringify 语法讲解

作用:这个函数的作用主要是为了系列化对象的. 可能有些人对系列化这个词过敏,我的理解很简单.就是说把原来是对象的类型转换成字符串类型(或者更确切的说是json类型的).就这么简单.打个比方说,你有一个类,那么你可以通过这个方法转换成相应的json类型的.很简单吧. 接着看. 语法: JSON.stringify(value [, replacer] [, space]) value:是必须要的字段.就是你输入的对象,比如数组啊,类啊等等. replacer:这个是可选的.它又分为2种方式,一种是