Webサーバーの基本-Nginxリライトケースコンバット(エラーページリダイレクト、仮想ディレクトリエイリアスリダイレクト、ドメイン名リダイレクト)

Nginxリライトケースコンバット(エラーページリダイレクト、仮想ディレクトリエイリアスリダイレクト、ドメイン名リダイレクト)


この環境は、Nginx学習環境を構築するためのCentos 7.8システムに基づいています。
具体的な構築については、Nginx-1.18.0環境の展開を参照してください

Nginx rewriteは、Apacheや他のWebサービスソフトウェアと同じです。Nginxrewriteの主な機能は、URLアドレスの書き換えを実現することです。Nginxの書き換えルールには、PCREソフトウェアのサポートが必要です。つまり、ルールの照合は、Perl互換の正規表現文法を介して実行されます。


1.Nginxの規則性

Nginxでの定期的なマッチング

  • 〜と〜*の違い
  • 〜一致するコンテンツでは大文字と小文字が区別されます
  • 〜*一致するコンテンツを無差別に小文字
  • !〜反転
  • ^〜ただし、同時に複数の一致が存在するため、最初に^〜の内容と一致させてください。正規表現をチェックしないでください(優先処理)

構文を使用する

ocation構文記述テーブルの
location命令は、ユーザーが要求したURIに従ってさまざまなアプリケーションを実行するために使用されます。
さまざまなURIと特殊文字の組み合わせの
場所の一致順序の説明[= | | * | ^〜] uri { }

ロケーション [=、〜、*、^ ] 嫌い {…}
命令 マッチID 一致するウェブサイトアドレス URIの照合後に実行される構成セクション

ここに画像の説明を挿入

2、Nginxリライトケースの実際の戦闘

書き換えコマンドの最後のフラグの説明

旗のシンボル 説明
最終 このルールが一致した後、新しいロケーションURIルールの一致を継続します
ブレーク このルールは、マッチングが完了すると終了し、後続のルールとは一致しなくなります。
リダイレクト 302一時リダイレクトに戻ると、リダイレクト後のURLアドレスがブラウザのアドレスバーに表示されます
パーマネント 301の永続的なリダイレクトに戻ると、リダイレクト後のURLアドレスがブラウザのアドレスバーに表示されます

Nginx書き換えのエンタープライズアプリケーションシナリオ

  • ユーザーのブラウジングを調整できますURL、より標準的に見えます、開発および製品担当者のニーズに沿って。
  • 検索エンジンにウェブサイトのコンテンツとより良いユーザーエクスペリエンスを検索させるために、企業は静的アドレスを装った動的URLアドレスサービスを提供します。
  • URLが新しいドメイン名に変更されたら、古いドメイン名にアクセスさせます新しいドメイン名にジャンプしますオン。たとえば、JDで360buy.comにアクセスすると、jd.comにリダイレクトされます。
  • による特別な変数、ディレクトリ、クライアント情報などのURL調整。

NginxベースのWebサービスを構成する

[root@node01 ~]# vim /etc/nginx/conf.d/host.conf 
    server {
    
    
        listen       192.168.5.11:80;
        server_name  news.123.cn;
        location / {
    
    
            root   /usr/share/nginx/html/news;
            index  index.html index.htm;
           }        
       }

[root@node01 ~]# vim /usr/share/nginx/html/news/index.html 
news test page...

[root@node01 ~]# systemctl enable --now nginx
[root@node01 ~]# netstat -lnutp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2219/nginx: master  

ブラウザアクセス:http://news.123.cn/
ここに画像の説明を挿入

1.エラーページのリダイレクト

[root@node01 ~]# vim /etc/nginx/conf.d/host.conf 
    server {
    
    
        listen       192.168.5.11:80;
        server_name  news.123.cn;
        location / {
    
    
            root   /usr/share/nginx/html/news;
            index  index.html index.htm;
            if (!-f $request_filename){
    
    
            rewrite /.* err.html permanent;
            }
           }
       }
[root@node01 ~]# nginx -s reload

[root@node01 news]# echo 'this page is not exists...' > err.html
[root@node01 news]# ll
total 8
-rw-r--r-- 1 root root 27 Feb 22 22:45 err.html
-rw-r--r-- 1 root root 18 Feb 22 14:23 index.html

テスト:http://news.123.cn/big_date.jpg
ここに画像の説明を挿入

2.仮想ディレクトリエイリアスリダイレクト

[root@node01 bbs]# vim /etc/nginx/conf.d/host.conf 
    server {
    
    
        listen       192.168.5.11:80;
        server_name  bbs.123.cn;
        location / {
    
    
            root   /usr/share/nginx/html/bbs;
            autoindex on;
            index  index.html index.htm;
            rewrite ^/virtual_dir/(.*) /first/secoend/web_age/$1 last;
        location /nginx_status {
    
    
        stub_status on;
        access_log off;
        }
        }
   }

[root@node01 bbs]# nginx -s reload

[root@node01 bbs]# cd /usr/share/nginx/html/bbs/
[root@node01 bbs]# mkdir first/secoend/web_age -p
[root@node01 bbs]# echo 'this is virtual dir test page...' > /first/secoend/web_age/virtusl_dir.html

テスト:http://bbs.123.cn/virtual_dir/virtusl_dir.html
ここに画像の説明を挿入

3.ドメインリダイレクト

[root@node01 ~]# vim /etc/nginx/conf.d/host.conf
    server {
    
    
        listen       192.168.5.11:80;
        server_name  bbs.123.cn;
        rewrite .* http://mirrors.aliyun.com/;
        location / {
    
    
            root   /usr/share/nginx/html/bbs;
            index  index.html index.htm;
           }
        }
[root@node01 ~]# nginx -s reload

テスト:
ブラウザへのアクセス:http://bbs.123.cn/

ここに画像の説明を挿入
うまくジャンプする
ここに画像の説明を挿入

[root@node01 ~]# vim /etc/nginx/conf.d/host.conf 
    server {
    
    
        listen       192.168.5.11:80;
        server_name  bbs.123.cn;
        rewrite .* https://blog.csdn.net/XY0918ZWQ;
        location / {
    
    
            root   /usr/share/nginx/html/bbs;
            index  index.html index.htm;
           }
        }

[root@node01 ~]# nginx -s reload

テスト:
ブラウザアクセス:http://bbs.123.cn/
ここに画像の説明を挿入
が正常にジャンプしました
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/XY0918ZWQ/article/details/113956416