nginx url地址重写功能
Nginx的url地址重写功能,主要是使用nginx提供的rewrite功能,且支持正则表达式
rewrite能够实现url的跳转,实现url规范化,根据请求的变量实现url跳转等等,
基于url重写功能常见的效果如下
对于爬虫程序的封禁,让其跳转到一个错误页面
动态的url,伪装成静态的html页面,便于搜索引擎的抓取
新旧域名的更新,替换
rewrite语法
rewrite ^/(.) http://192.168.178.134/$1 parmanent;
rewrite 是nginx地址重写的关键词指令,开启跳转功能
正则 ^/(.) 表示匹配所有的请求,匹配成功后,跳转到后面指定的url地址
$1是取出前面正则表达式分组括号里的内容
parmanent 表示301 重定向的标记
rewrite结尾的参数标记如下
Last 规则匹配完成后,继续向下匹配新的location
break 本条规则匹配万抽,立即停止匹配动作
Redirct 返回302临时重定向状态码,浏览器地址栏显示跳转后的url ,爬虫不会更新该url
Permanent 返回301永久重定向,浏览器地址栏显示跳转后的url,爬虫会更新该url
last和break用于实现url重写,浏览器的地址栏不会发生变化
redirct和permanent也是用于url跳转,浏览器url地址栏发生变化,跳转到新的url地址栏
实现一个301URL跳转
准备一个配置文件,实现,当用户访问,直接跳转百度页面
server{
listen 90;
server_name _ ;
最低级请求,所有请求都走到这里
location / {
rewrite ^/(.*) http://wwww.baidu.com/$1 permanent;
}
}
Nginx访问认证
nginx提供了认证模块
location / {
auth_basic 'zzz';
auth_basic_user_file conf/htpasswd;
}
linxu提供了密码生成命令
htpasswd 是apache提供的密码生成工具,nginx也支持auth_basic模块,因此我们可以利用Htpasswd命令生成
账号密码文件,提供给nginx使用
yum install httpd-tools -y
语法
htpasswd -bc .access username password
-b 在命令行中输入 账号密码
-c 创建密码文件
username 账号
password 密码
默认.access文件采用md5方式加密验证
实操:
生成密码文件
[root@localhost extra]# htpasswd -bc ./htpasswd jay 666
准备一个用于练习认证模块的配置文件
server{
listen 95;
server_name _;
location / {
root html/learn_auth;
index index.html;
auth_basic "learn nginx auth";
nginx会去这个文件中验证账号密码
auth_basic_user_file /opt/nginx1.8/conf/extra/htpasswd;
}
}