天天看点

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

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

1    nginx location作用:

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

2    location语法

location[=|`||`*|]

<code>[root@web01 scripts]</code><code># cd /application/nginx/conf/</code>

<code>[root@web01 extra]</code><code># vim www.conf</code>

<code>        </code><code>server {</code>

<code>        </code><code>listen       80;</code>

<code>        </code><code>server_name  www.etiantian.org etiantian.org;</code>

<code>        </code><code>location / {</code>

<code>        </code><code>return</code> <code>401;</code>

<code>        </code><code>}</code>

<code>        </code><code>location = / {</code>

<code>        </code><code>return</code> <code>402;</code>

<code>        </code><code>location </code><code>/documents/</code> <code>{</code>

<code>        </code><code>return</code> <code>403;</code>

<code>        </code><code>location ^~ </code><code>/images/</code> <code>{</code>

<code>        </code><code>return</code> <code>404;</code>

<code>        </code><code>location ~* \.(gif|jpg|jpeg)$ {</code>

<code>        </code><code>return</code> <code>500;</code>

<code>        </code><code>#access_log logs/www_access.log main;</code>

<code>[root@web01 extra]</code><code># /application/nginx/sbin/nginx -t</code>

<code>nginx: the configuration </code><code>file</code> <code>/application/nginx-1</code><code>.6.3</code><code>//conf/nginx</code><code>.conf syntax is ok</code>

<code>nginx: configuration </code><code>file</code> <code>/application/nginx-1</code><code>.6.3</code><code>//conf/nginx</code><code>.conf </code><code>test</code> <code>is successful</code>

<code>[root@web01 extra]</code><code># /application/nginx/sbin/nginx -s reload</code>

加上注释172.16.1.8      web01 www.etiantian.org

<code>[root@web01 extra]</code><code># vim /etc/hosts</code>

<code>127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4</code>

<code>::1         localhost localhost.localdomain localhost6 localhost6.localdomain6</code>

<code>172.16.1.5      lb01</code>

<code>172.16.1.6      lb01</code>

<code>172.16.1.7      web02</code>

<code>172.16.1.8      web01 www.etiantian.org</code>

<code>172.16.1.51     de01 db01.etiantian.org</code>

<code>172.16.1.31     nfs01</code>

<code>172.16.1.41     backup</code>

<code>172.16.1.61     m01</code>

<code>[root@web01 extra]</code><code># ping www.etiantian.org -c4</code>

<code>PING web01 (172.16.1.8) 56(84) bytes of data.</code>

<code>64 bytes from web01 (172.16.1.8): icmp_seq=1 ttl=64 </code><code>time</code><code>=0.031 ms</code>

<code>64 bytes from web01 (172.16.1.8): icmp_seq=2 ttl=64 </code><code>time</code><code>=0.033 ms</code>

<code>64 bytes from web01 (172.16.1.8): icmp_seq=3 ttl=64 </code><code>time</code><code>=0.030 ms</code>

<code>64 bytes from web01 (172.16.1.8): icmp_seq=4 ttl=64 </code><code>time</code><code>=0.031 ms</code>

<code>--- web01 </code><code>ping</code> <code>statistics ---</code>

<code>4 packets transmitted, 4 received, 0% packet loss, </code><code>time</code> <code>2999ms</code>

<code>rtt min</code><code>/avg/max/mdev</code> <code>= 0.030</code><code>/0</code><code>.031</code><code>/0</code><code>.033</code><code>/0</code><code>.004 ms</code>

curl 一下

<code>[root@web01 extra]</code><code># curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org</code>

<code>402</code>

<code>[root@web01 extra]</code><code># cp www.conf{,.test.location}</code>

<code>        </code><code>#location = / {</code>

<code>        </code><code>#return 402;</code>

<code>        </code><code>#}</code>

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

<code>[root@web01 extra]</code><code># ../../sbin/nginx -s reload</code>

<code>401</code>

<code>[root@web01 extra]</code><code># curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/index.html</code>

<code>[root@web01 extra]</code><code># curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/documents/document.html</code>

<code>403</code>

<code>[root@web01 extra]</code><code># curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/images/1.gif</code>

<code>404</code>

<code>[root@web01 extra]</code><code># curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/test/1.gif</code>

<code>500</code>

  匹配顺序:

<a href="https://s1.51cto.com/wyfs02/M02/9F/0F/wKioL1mbBimQwyElAABpDJWwu9o892.jpg" target="_blank"></a>

<a href="https://s2.51cto.com/wyfs02/M01/00/5F/wKiom1mbBjKjKiPHAABNlroeFow948.jpg" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M00/9F/0F/wKioL1mbBivjmFKtAABRAM7-oqg298.jpg" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M01/00/5F/wKiom1mbBjShdpAsAABHsrinSXo055.jpg" target="_blank"></a>

<a href="https://s2.51cto.com/wyfs02/M00/9F/0F/wKioL1mbBi2QQB7kAABDsQJzOr4234.jpg" target="_blank"></a>

<a href="https://s1.51cto.com/wyfs02/M01/9F/0F/wKioL1mbBi_xgFkIAABUNFJCCLI922.jpg" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M02/00/5F/wKiom1mbBjii0OZrAACRvxsoPT4339.jpg" target="_blank"></a>

实战1:

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

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

<code>[root@web01 extra]</code><code># vim </code>

<code>[root@web01 extra]</code><code># cat www.conf</code>

<code>        </code><code>location / {  </code>

<code>        </code><code>root html</code><code>/www</code><code>;            </code><code>#403修改为指定的地址</code>

<code>        </code><code>index index.html;         </code><code>#403修改为指定的地址   </code>

<code>        </code><code>location ^~ </code><code>/images/</code> <code>{ </code>

<code>[root@web01 extra]</code><code># cd ../../html/www/</code>

<code>[root@web01 www]</code><code># mkdir documents</code>

<code>[root@web01 www]</code><code>#cd documents/</code>

<code>[root@web01 www]</code><code># echo doc &gt;index.html</code>

<a href="https://s5.51cto.com/wyfs02/M02/00/5F/wKiom1mbCr3ze7rxAAA4VMMdcW4530.jpg" target="_blank"></a>

这就说明设置成功了。

本文转自sandshell博客51CTO博客,原文链接http://blog.51cto.com/sandshell/1958210如需转载请自行联系原作者

sandshell

继续阅读