nginx のロケーションで URI の傍受を実装する方法

nginx のロケーションで URI の傍受を実装する方法

例:

場所のルートとエイリアス

  • ルートディレクティブは、ルートによって設定されたディレクトリに検索ルートを設定するだけです。つまり、URIを切り捨てるのではなく、元のURIを使用してディレクトリにジャンプし、ファイルを検索します。
  • aiasディレクティブは、一致するURIを切り捨て、aliasで設定されたパスと残りのURIを検索のサブパスとして使用します。

場所のproxy_passのuri

proxy_pass urlにuriが含まれていない場合

  • 末尾の文字が「/」の場合、一致する URI は切り捨てられます。
  • 末尾の文字が「/」でない場合、一致する URI は切り捨てられません。

proxy_pass の URL に URI がある場合、一致する URI は切り捨てられます。


ルートの場所

root@pts/1 $ ls -ld /data/web/lctest*|awk '{print $NF}'
/データ/ウェブ/lctest
/データ/ウェブ/lctest2
/データ/ウェブ/lctest3
/データ/ウェブ/lctest4


場所 /lctest {
  ルート /data/web/;
}

場所 /lctest2/ {
  ルート /data/web/;
}
場所 /lctest3 {
  ルート /data/web;
}
場所 /lctest4/ {
  ルート /data/web;
}

カールテストの結果は次のとおりです

注: ブラウザに入力するときに末尾に / を追加しないと、自動的に追加されますが、curl では追加されません。

root@pts/1 $ curl http://tapi.xxxx.com/lctest/
こんにちは世界

root@pts/1 $ curl http://tapi.xxxx.com/lctest2/
こんにちは世界
2

root@pts/1 $ curl http://tapi.xxxx.com/lctest3/
3
こんにちは世界

root@pts/1 $ curl http://tapi.xxxx.com/lctest4/
こんにちは世界
4

場所の別名

場所 /lctest5 {
  エイリアス /data/web/;
}
場所 /lctest6/ {
  エイリアス /data/web/;
}

場所 /lctest7 {
  エイリアス /data/web;
}

## 403 /data/web は禁止されています
場所 /lctest8/ {
  エイリアス /data/web;
}

カールテストの結果は次のとおりです

'http://tapi.kaishustory.com/lctest5/' を curl します。
'http://tapi.kaishustory.com/lctest6/' を curl します。
'http://tapi.kaishustory.com/lctest7/' を curl します。
結果はすべて /data/web/index.html 出力 root@pts/1 $ curl 'http://tapi.kaishustory.com/lctest8/' です
<html>
<head><title>403 禁止</title></head>
<body bgcolor="white">
<center><h1>403 禁止</h1></center>
<hr><center>nginx</center>
</本文>
</html>

場所 proxy_pass

#--------proxy_pass 設定---------------------
location /t1/ { proxy_pass http://servers; } #通常、切り捨てられていない location /t2/ { proxy_pass http://servers/; } #通常、切り捨てられている location /t3 { proxy_pass http://servers; } #通常、切り捨てられている location /t4 { proxy_pass http://servers/; } #通常、切り捨てられている location /t5/ { proxy_pass http://servers/test/; } #通常、切り捨てられている location /t6/ { proxy_pass http://servers/test; } #「/」が欠落しているため切り捨てられている location /t7 { proxy_pass http://servers/test/; } #「//」が含まれているため切り捨てられている location /t8 { proxy_pass http://servers/test; } #通常、切り捨てられている

テストスクリプト

i が $(seq 8) の場合
する
  url=http://tapi.xxxx.com/t$i/doc/index.html
  エコー "----------$url------------"
  カールURL
終わり

テスト結果

----------http://tapi.xxxx.com/t1/doc/index.html------------
ドキュメント

----------http://tapi.xxxx.com/t2/doc/index.html------------
ドキュメント

----------http://tapi.xxxx.com/t3/doc/index.html------------
ドキュメント

----------http://tapi.xxxx.com/t4/doc/index.html-------------
ドキュメント

----------http://tapi.xxxx.com/t5/doc/index.html------------
/テスト/ドキュメント/インデックス.html

----------http://tapi.xxxx.com/t6/doc/index.html------------
/テストドキュメント/index.html

----------http://tapi.xxxx.com/t7/doc/index.html-------------
/テスト//doc/index.html

----------http://tapi.xxxx.com/t8/doc/index.html-------------
/テスト/ドキュメント/インデックス.html

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx 構成ディレクティブの場所マッチャーの優先順位とセキュリティの問題
  • Nginx サーバーにおけるロケーション設定の詳細な説明
  • Nginx ロケーションマッチングルールの詳細な説明
  • Nginx サーバーにおけるロケーション設定の基本的なポイントの分析
  • Nginxサーバのロケーションディレクティブマッチングルールの詳細な説明
  • Nginx ロケーション設定の詳細な説明
  • Nginx の Location ディレクティブの簡単なガイド
  • Nginx のロケーション マッチング ルールの概要
  • nginx 設定の場所の概要の場所の通常の書き込みと書き換えルールの書き込み
  • Nginx ロケーションマッチングルールの例

<<:  CentOS での MySQL ワークベンチのインストールと設定のチュートリアル

>>:  JavaScript 型検出方法の例のチュートリアル

推薦する

Vue.jsは画像切り替え機能を実装する

この記事では、画像切り替え機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...

フロントエンドのパフォーマンス最適化を学ぶ準備として、HTMLページのレンダリングプロセスを理解する

現在、フロントエンドのパフォーマンス最適化について学んでいます。適切な解決策を見つけ、パフォーマンス...

MySQL 5.7.21 解凍版のインストールと設定方法のグラフィックチュートリアル

私は頻繁にシステムをインストールするので、インストールのたびにいくつかのソフトウェアを再インストール...

Nginx+SSL による双方向認証を実装するためのサンプル コード

まずディレクトリを作成する cd /etc/nginx mkdir ssl cd ssl CA と自...

Echarts 凡例コンポーネントのプロパティとソース コード

凡例コンポーネントは、ECharts でよく使用されるコンポーネントです。シリーズ マーカーの名前を...

面接でよく聞かれる Vue 修飾子 13 個

目次1. 怠惰な2.トリム3.番号4.停止5. キャプチャ6.自分7.一度8.予防する9.ネイティブ...

Linuxで環境変数を削除する詳細な手順

Linuxで環境変数を削除するには?unsetコマンドを使用してすぐに削除します1. Linuxクラ...

シェルスクリプトは、Docker の半自動コンパイル、パッケージ化、およびリリースアプリケーション操作を構築します。

Docker 公開方法は、DevOps (送信、コンパイル、パッケージ化、リリースなどの一連のイベ...

グリッド共通レイアウトの実装

両側に隙間なし、各列間に隙間あり 幅: 100%; 表示: グリッド; グリッドテンプレート列: r...

角度に基づくツリー型セカンダリテーブルを実現する

まず効果を見てみましょう: コード: 1.html <div class="user...

Docker バインディング固定 IP/クロスホストコンテナ相互アクセス操作

序文これまでは、パイプワークで割り当てた静的 IP は一時的なものであり、再起動すると無効になってい...

iFrameは背景を覆うポップアップレイヤーとして使うのに最適です

最近、私は「ぶどうコレクション」というプロジェクトに取り組んでいます。簡単に言うと、Budou ペー...

初心者向けの一般的な Linux システムコマンドの完全なリスト

Linux コマンドの学習は、ほとんどの初心者にとって最大の障害です。今日は、Linux システムで...

js を使用して過去 1 週間、1 か月、3 か月の時間を取得する簡単な例

目次過去1週間の時間を取得する過去1か月の時間を取得する過去3か月分を取得新しい Date() と ...

linuxdeployqt を使用して Ubuntu で Qt プログラムをパッケージ化する問題を解決する

いくつかの Qt インターフェース プログラムを作成しましたが、Qt 環境がインストールされていない...