nginx-rewrite(多种实现方法)
目录
一、 前提配置
二、 基于域名跳转
三、 基于客户端IP访问
四、 基于旧域名跳转到新域名后面加目录
五、 基于参数匹配的跳转
六、 基于目录下多有php结尾的文件跳转
一、 前提配置
1. 客户端添加hosts记录(我使用的是win10)
C:\Windows\System32\drivers\etc\hosts
2. 关闭防火墙
systemctl stop firewalld
setenforce 0
3. 安装组件
yum -y install epel-release
4. 安装nginx(使用网络安装)
yum install -y nginx
5. 修改站点文件
vim /etc/nginx/conf.d/default.conf
如果没有default.conf文件,就自己创建一个
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location /mystatus {
stub_status;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
6. 编写网页
echo "<h1>www.test.com</h1>" > /usr/share/nginx/html/index.html
7. hosts记录
192.168.180.110 www.test.com
192.168.180.110 www.test1.com
8. 开启nginx
nginx
二、 基于域名跳转
1. 修改站点文件,在location /下加入配置
vim /etc/nginx/conf.d/default.conf
if ($host = 'www.test.com') {
rewrite ^/(.*)$ http://www.test1.com/$1 permanent;
}
2. 重启nginx
3. 客户端浏览器访问,跳转到www.test1.com上
www.test.com
三、 基于客户端IP访问
1. 修改站点文件,把原来的删掉
vim /etc/nginx/conf.d/default.conf
set $rewrite true;
if ($remote_addr = "192.168.180.110") {
set $rewrite false;
}
if ($rewrite = true ) {
rewrite (.+) /maintenance.html;
}
2. 编写网页
echo "Website is Maintaining,Please visit later." > /usr/share/nginx/html/maintenance.html
3. 重启nginx
4. 客户端浏览器访问测试,每次访问都需要把浏览器缓存清除
只有IP为192.168.180.110才能访问页面,其他IP访问的是服务页面
四、 基于旧域名跳转到新域名后面加目录
1. 修改站点文件,将原先的配置删除
vim /etc/nginx/conf.d/default.conf
rewrite (.+) http://www.test.com/qt$1 permanent;
2. 重启nginx
3. 添加hosts记录
vim /etc/hosts
192.168.180.110 qt.test.com
4. 客户端浏览器测试,每次访问都需要把浏览器缓存清除
qt.test.com
五、 基于参数匹配的跳转
1. 修改站点文件,将原来的配置删除
vim /etc/nginx/conf.d/default.conf
if ($request_uri ~ ^/100-(100|200)-(\d+).html) {
rewrite (.*) http://www.test.com permanent;
}
2. 客户端浏览器测试,每次访问都需要把浏览器缓存清除
http://www.test.com/100-100-100.html(访问这个),跳转到www.test.com页面
六、 基于目录下多有php结尾的文件跳转
1. 修改站点文件,删除之前的配置
vim /etc/nginx/conf.d/default.conf
rewrite (.+) http://www.test.com permanent;
2. 客户端浏览器访问测试,每次访问都需要把浏览器缓存清除
http://www.test.com/upload/1.php(访问这个),跳转www.test.com网页