nginxのnginxの書き換え書き換えと正規表現

A、書き換えジャンプ達成
サービス契約は、モジュール機能
のURLパス・リソース・ロケータを

  • nginxの----支持体は、条件付きサポート場合は、URL書き換えではなく、他の
  • ジャンプ----サイクルを10回、500の以上のnginxの戻りエラーコードまで行うことができます
  • URL書き換えを達成し、リダイレクト正規表現とフラグと組み合わせて、----グローバル変数、または変数の使用nginxの自身のセットを書き換える
    nginxのnginxの書き換え書き換えと正規表現
    2を、書き換えの使用シナリオ
  • 書き換えマッチジャンプを使用します
  • 試合後のグローバル変数のジャンプを使用している場合
  • 次に使用位置マッチングをジャンプ
    サーバ{}、{}もし、上1.rewriteを位置{} 段落
    グローバル変数の一致を使用している場合、リバースプロキシproxy_pass使用2.ドメイン名またはパラメータストリング
    3、nginxの正規表現を
    一般的な正規表現のメタ文字
    nginxのnginxの書き換え書き換えと正規表現
    4、書き換えコマンドの
    nginxのnginxの書き換え書き換えと正規表現
    場所カテゴリ
    nginxのnginxの書き換え書き換えと正規表現
    の正規表現マッチングの共通
    nginxのnginxの書き換え書き換えと正規表現
    5、場所の優先順位
    優先順位の順に:
  • タイプ=
  • ^〜型の式
  • 正規表現(と)タイプ
  • 従来の文字列マッチング型のプレス前方一致
  • 一般的な一致は(/)は、他の一致した場合、すべての要求がに一致している
    (最高から最低まで)優先順位の場所のルール
    1.特定のファイルと一致します
  • 位置=フルパス
  • 完全なパスの場所^〜
  • 場所〜*フルパス
  • 完全なパスの場所〜
  • 完全なパスの場所
  • LOCATION /
    2.ファイルディレクトリへのアクセスと一致しません
  • 場所=ディレクトリ
  • 場所^〜ディレクトリ
  • ディレクトリの場所〜
  • 場所〜*ディレクトリ
  • 場所のディレクトリ
  • 場所/
    VIアプリケーションシナリオのテスト
    会社、古いドメイン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

    オープンwin10クライアントは、configure DNSサーバ、およびドメイン名の使用。
    nginxのnginxの書き換え書き換えと正規表現
    nginxのnginxの書き換え書き換えと正規表現

    [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

    nginxの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

    nginxのnginxの書き換え書き換えと正規表現
    ジャンプ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 

    nginxのnginxの書き換え書き換えと正規表現
    nginxのnginxの書き換え書き換えと正規表現
    パラメータマッチングジャンプに基づく---ホームページへジャンプ
    nginxの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

    nginxのnginxの書き換え書き換えと正規表現
    nginxの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

    nginxのnginxの書き換え書き換えと正規表現
    nginxの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         }

    nginxのnginxの書き換え書き換えと正規表現
    nginxの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         }
    [root@localhost named]# killall -3 nginx
    [root@localhost named]# nginx

おすすめ

転載: blog.51cto.com/14557905/2463924