Nginx常用功能配置二

Nginx常用功能配置二

Nginx location匹配设置

location作用:可以根据用户请求的URI来执行不同的应用,根据用户请求的网站的地址URL匹配。

location语法:

location[ = | ~ | ~* | ^~ ]uri{
...
}

uri:匹配的网站网址简介

优先级说明:
第一名:location = / { 精确匹配
第二名:location ^~/images/ { 不做正则匹配检查
第三名:location ~*\.(gif|jpg|jpeg)${ 正则匹配
第四名:location /documents/{ 匹配常规字符串
第五名:location /{ 所有location都不能匹配后的默认匹配

标识

说明

=

表示精确匹配(优先级最高,无论何处都是首先输出)

~

区分大小写匹配

~*

不区分大小写匹配

!~和!~*

表示的意思与上面的意思相反

^~

表示常规的字符串匹配检查后,不做正则表达式的检查

匹配标识:[ = | ~ | ~* | ^~ ]

 

 

 

 

 

具体操作步骤

###首先备份,避免误操作###
cd /application/nginx/conf/extra/cp www.conf ww.conf.beifen
vim www.conf
server{
      listen   80;
      server_name www.ceshi.org ceshi.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;
}###检查nginx语法并重启###
../../sbin/nginx -t
../../sbin/nginx -s reload###对hosts进行修改###
vim /etc/hosts172.16.1.8  web01 www.ceshi.org
###测试###
ping www.ceshi.org
curl -s -o /dev/null -I -w "%{http_code}\n" http://www.ceshi.orgNginx rewrite功能

rewrite主要功能时实现URL地址重写,nginx的rewrite规则需要PCRE软件支持

简单的例子:
rewrite ^/(.*)http:www.ceshi.org/$1 permanent;

rewrite 指令结尾flag标记说明:

指令

说明

last

表示本条规则匹配完成后,继续向下匹配新的location URI规则

break

表示本条规则匹配完成即终止,不再匹配后面的任何规则

redirect

表示返回302临时重定向,浏览器地址栏会显示跳转后的URL地址

permanent

表示返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

 

 

 

 

具体操作步骤

###切换到配置文件目录下###
cd /application/nginx/conf/extra/
vim www.conf
server{
      listen   80;
      server_name www.ceshi.org ceshi.org;      location / {
          index index.html;
      }      location ^~ /images/ {
          rewrite ^/(.*) http://blog.ceshi.com/$1 permanent;
      }     access_log logs/www_access.log main;
     }###检查nginx语法并重启###
../../sbin/nginx -t
../../sbin/nginx -s reload

###完成后,web输入含有images格式即会实现跳转,例如:blog.ceshi.com/images/ojijoij###

Nginx rewrite 301跳转

以往是通过别名实现ceshi.org和www.ceshi.org访问同一个地址,除了这个,还可以使用nginx Rewrite301跳转;(别名的状态码是200,rewrite的状态码是301),200效率高一点,但是看不到新的地址,301效率低一点,但是可以看到新地址;

302状态码说明:请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求。(临时跳转)

301状态码说明:301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。(永久跳转)

具体操作步骤

###切换到配置文件目录下###

cd /application/nginx/conf/extra/
vim www.conf
#www virtualhost by syz
     server {
      listen     80;
      server_name ceshi.org;
#当用户访问ceshi.org的时候,及下面的任意内容时,都会通过这条rewrite跳转到www.ceshi.org对应的地址;
     }
     server {
      listen    80;
      server_name www.ceshi.org;
      location / {
          root    html/www;
          index   index.html index.htm;
      }
     access_log logs/access_www.log main gzip buffer=32k flush=5s;
}###检查nginx语法并重启###
../../sbin/nginx -t
../../sbin/nginx -s reload

Nginx访问认证

认证格式:就是指登录网址需要认证,即登录名和密码

location / {
             auth_basic          "closed site"     (这里是个提示,例如:syz training)
             auth_absic_user_file conf/htpasswd;    (密码文件,认证的文件)
}

具体操作步骤

cd /application/nginx/conf/extra/
vim www.conf
#www virtualhost by syz
     server {
      listen     80;
      server_name etiantian.org;

      location / {
          auth_basic          "oldboy training";   
          auth_absic_user_file /application/nginx/conf/htpasswd;          root    html/www;
          index   index.html index.htm;
      }
      access_log logs/access_www.log main ;
}###检查nginx语法并重启###
../../sbin/nginx -t
../../sbin/nginx -s reload

学而不思则罔,思而不学则殆。