Nginx地址重写 rewrite
Rewrite又称URL Rewrite,即url重写,就是把传入Web的请求重定向到其他url的过程。
rewrite重写好处:
1.动态页面url重写伪静态化,比如http://www.123.com/news/index.php?id=123 使用URLRewrite 转换后可以显示为 http://www.123.com/news/123.html。
2.重写更安全,url中暴露太多参数,可能会造成信息泄露,静态化的url可以给我们带来更高的安全。
3.实现网络地址跳转,例如用户访问360buy.com,将其跳转到jd.com。例如当用户访问80端口时,将其跳转到443端口。
示例1:
访问http://192.168.122.4/abc/a/1.html ==> http://192.168.122.4/ccc/bbb/b.html
提示:
1、/abc/a/1.html页面是否存在不重要
2、/ccc/bbb/b.html页面必须存在
mkdir -p /app/nginx/html/ccc/bbb
echo bbbbbbbbbbbbbbbb.html > /app/nginx/html/ccc/bbb
vim /app/nginx/conf/nginx.conf
location /abc {
rewrite .* /ccc/bbb/b.html ;# permanent;
# return 301 /ccc/bbb/b.html;
}
添加permanent参数和不添加区别如下(除了好看没啥用)
查看效果
我们访问的是10.10.81.81/abc
但是实际上跳转的是10.10.81.81/ccc/bbb/b.html
示例二
访问cloud.com,跳转到百度
注意客户端的解析
cd /etc/nginx/conf.d
vim cloud.conf
server {
listen 80;
server_name cloud.com;
index index.php index.html;
root /cloud;
rewrite ^(.*)$ https://baidu.com$1 permanent;
}
访问测试:
已成功跳转
示例三
80跳转443
访问:80www.test.com 跳转nginx.linux.com443
一、.搭建私有CA机构
1.基于https的协议工作的一中虚拟主机,要构建这样的网站需要mod_ssl模块的支持。
2.需要提供两个文件:证书文件和私钥文件。
证书文件:标识这个网站服务器身份。
私钥文件:主要用来实现在服务器端对数据进行加密,然后在网站中传输。
(因证书生产环境需要找对应机构申请,要钱,本案例采用私有CA的方式:让web自己作为
一个证书服务器给自己颁发一个证书)
生成证书及秘钥文件
1)准备存放证书和秘钥的目录
mkdir /etc/nginx/ssl
2)使用openssl生成基于rsa数学算法长度为1024bit的秘钥,文件必须以key为结尾
openssl genrsa 1024 > /etc/nginx/ssl/server.key
3)使用秘钥文件生成证书申请
openssl req -new -key /etc/nginx/ssl/server.key > /etc/nginx/ssl/server.csr
4)同意申请,生成证书
openssl req -x509 -days 365 -key /etc/nginx/ssl/server.key -in /etc/nginx/ssl/server.csr > /etc/nginx/ssl/server.crt
二、搭建私有443https网站
1、创建目录
mkdir /bj echo "443sssssssssssssssssssssssssssl " > /bj/index.html
2、编辑nginx.conf文件
vim /etc/nginx/conf.d/bj.conf
server {
listen 443 ssl;
server_name nginx.liunx.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
root /bj;
index index.html index.htm;
}
}
nginx -t #重新加载配置文件即可
nginx -s reload
三、配置80跳转443
只需要在443的配置文件里新加80跳转的配置即可
server {
listen 80;
server_name www.test.com test.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
成功