您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        这篇文章将为大家详细讲解有关Nginx正则表达式与Nginx rewrite重写功能的介绍,文章内容质量较高,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、 Rewrite 跳转实现
服务协议功能模块
url 资源定位路径





location /
六、应用场景测试
公司旧域名 www.domain.com 因业务需求有变更,需要使用新域名 www.newdomain.com 代替,不能废除旧域名,从旧域名跳转到新域名,且保持其参数不变
[root@localhost bin]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
获取http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
警告:/var/tmp/rpm-tmp.IHyTHc: 头V4 RSA/SHA1 Signature, 密钥 ID 7bd9bf62: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
1:nginx-release-centos-7-0.el7.ngx ################################# [100%]
[root@localhost bin]# yum install nginx -y [root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.56.1 /mnt
Password for root@//192.168.254.10/linuxs:  
[root@localhost ~]# cd /abc/LNMP-C7/LNMP-C7/
[root@localhost LNMP-C7]# ls
Discuz_X3.4_SC_UTF8.zip
mysql-boost-5.7.20.tar.gz
ncurses-5.6.tar.gz
nginx-1.12.2.tar.gz
php-5.6.11.tar.bz2
php-7.1.10.tar.bz2
php-7.1.20.tar.bz2
php-7.1.20.tar.gz
zend-loader-php5.6-linux-x86_64_update1.tar.gz
[root@localhost LNMP-C7]# tar -zxvf nginx-1.12.2.tar.gz -C /opt[root@localhost LNMP-C7]# useradd -M -s /sbin/nologin nginx
[root@localhost LNMP-C7]# cd /opt/nginx-1.12.2/
[root@localhost nginx-1.12.2]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[root@localhost nginx-1.12.2]# yum install gcc gcc-c++ pcre pcre-devel make zlib-devel -y
[root@localhost nginx-1.12.2]#  ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@localhost nginx-1.12.2]# make && make install[root@localhost conf]# vim nginx.conf
37         server_name  www.accp.com;
41         access_log  logs/www.accp.com/access.log  main;[root@localhost conf]# yum install bind -y
[root@localhost conf]# vim /etc/named.conf 
13         listen-on port 53 { any; };
21         allow-query     { any; };
[root@localhost conf]# vim /etc/named.rfc1912.zones 
25 zone "accp.com" IN {
26         type master;
27         file "accp.com.zone";
28         allow-update { none; };
29 };
[root@localhost conf]# cd /var/named/
[root@localhost named]# ls
data     named.ca     named.localhost  slaves
dynamic  named.empty  named.loopback
[root@localhost named]# cp -p named.localhost accp.com.zone
[root@localhost named]# vim accp.com.zone 
www     IN      A       192.168.247.202
[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewalld.service 
[root@localhost named]# setenforce 0
[root@localhost named]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost named]# cd /usr/local/nginx/
[root@localhost nginx]# ls
conf  html  logs  sbin
[root@localhost nginx]# cd logs/
[root@localhost logs]# mkdir www.accp.com
[root@localhost logs]# ls
error.log  www.accp.com
[root@localhost logs]# nginx 
[root@localhost logs]# netstat -natp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6[root@localhost logs]# vim /usr/local/nginx/conf/nginx.conf
    location / {
       #域名重定向
‘                 if ($host = 'www.accp.com') {
’                       rewrite ^/(.*)$ http://www.kgc.com/$1 permanent;
‘               }
             root /html;
             index index.html index.htm;
    }[root@localhost logs]# vim /etc/named.rfc1912.zones 
zone "kgc.com" IN {
    type master;
    file "kgc.com.zone";
    allow-update { none; };
};
[root@localhost logs]# cd /var/named/
[root@localhost named]# ls
accp.com.zone  dynamic   named.empty      named.loopback
data           named.ca  named.localhost  slaves
[root@localhost named]# cp -p accp.com.zone kgc.com.zone[root@localhost named]# systemctl restart named
[root@localhost named]# killall -1 nginx
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
37         server_name  bbs.accp.com;
42         location /post {
43                 rewrite (.+) http://www.accp.com/bbs$1 permanent;
44         }[root@localhost html]# cd -
/var/named
[root@localhost named]# vim accp.com.zone 
[root@localhost named]# cat accp.com.zone 
$TTL 1D
@   IN SOA  @ rname.invalid. (
                0   ; serial
                1D  ; refresh
                1H  ; retry
                1W  ; expire
                3H )    ; minimum
NS  @
A   127.0.0.1
bbs IN  A   192.168.247.202[root@localhost named]# killall -3 nginx
[root@localhost named]# nginx
[root@localhost named]# systemctl restart named
基于客户端IP访问跳转
[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf
42 #设置是否合法的IP标志
43         set $rewrite true;
44 #判断是否为合法IP,是否是允许的IP
45         if ($remote_addr = "192.168.247.139"){
46                 set $rewrite false;
47         }
48 #不被允许的IP进行判断,打上标记
49         if ($rewrite = true){
50                 rewrite (.+) /maintenance.html;
51         }
52 #匹配标记进行跳转站点
53         location = /maintenance.html {
54                 root html;
55         }[root@localhost named]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html  index.html
[root@localhost html]# vim maintenance.html
[root@localhost html]# killall -3 nginx 
[root@localhost html]# nginx 

基于参数匹配的跳转———跳转到首页
[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf
37         server_name  www.accp.com;
42         if ($request_uri ~ ^/100-(100|200)-(\d+).html$){
43                 rewrite (.*) http://www.accp.com permanent;
44         }
[root@localhost named]# vim accp.com.zone 
[root@localhost named]# cat accp.com.zone 
$TTL 1D
@   IN SOA  @ rname.invalid. (
                0   ; serial
                1D  ; refresh
                1H  ; retry
                1W  ; expire
                3H )    ; minimum
NS  @
A   127.0.0.1
www IN  A   192.168.247.202[root@localhost named]# systemctl restart named
[root@localhost named]# killall -3 nginx
[root@localhost named]# nginx

基于目录下所有PHP文件跳转
[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf
42         location ~* /upload/.*\.php$ {
43                 rewrite (.+) http://www.accp.com permanent;
44         }[root@localhost named]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost named]# killall -3 nginx
[root@localhost named]# nginx

基于最普通URL请求的跳转——跳转到首页
[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf
42         location ~* ^/abc/123.html {
43                 rewrite (.+) http://www.accp.com permanent;
44         }

基于最普通URL请求的跳转——跳转到首页
[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf
42         location ~* ^/abc/123.html {
43                 rewrite (.+) http://www.accp.com permanent;
44         }[root@localhost named]# killall -3 nginx
[root@localhost named]# nginx免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。