テキストまたはJSONを返すようにnginxを設定する方法

テキストまたはJSONを返すようにnginxを設定する方法

特定のインターフェースをリクエストするときに、指定されたテキスト文字列または JSON 文字列を返す必要がある場合があります。ロジックが非常に単純な場合、または単に固定文字列である場合は、nginx を使用してすばやく実装できるため、リクエストに応答するプログラムを作成する必要がなくなり、サーバーのリソース使用量が削減され、応答パフォーマンスが非常に速くなります。

まず、固定テキストと JSON を返す方法を見てみましょう。サーバーで位置情報の傍受を設定するだけです。設定例は次のとおりです。

修正テキスト:

場所 ~ ^/get_text {
  デフォルトタイプはtext/htmlです。
  200 'これはテキストです!' を返します。 
}

修正されたjson:

場所 ~ ^/get_json {
  デフォルトのタイプは application/json です。
  200 '{"status":"success","re​​sult":"nginx json"}' を返します。
}

保存後、設定を有効にするには再読み込みしてください。注意: default_type を追加する必要があります。追加しないと、ブラウザは認識されないファイルとしてダウンロードします。

あるいは、次に示すように、要求された URL に基づいて異なる文字列を返すこともできます。

場所 ~ ^/get_text/article/(.*)_(\d+).html$ {
  デフォルトタイプはtext/htmlです。
  $s を $1 に設定します。
  $d を $2 に設定します。
  200 str:$s$d を返します。
}

この方法では、URL 内の文字列を簡単にインターセプトできます。もちろん、(.*) を使用してすべてを一致させることもできます。実際には、さまざまなニーズに応じて定義できます。

上記は簡単な例ですが、サーバー環境での簡単な処理であれば、nginx を駆使することでプログラミングの手間を省くことができます。

さらに、中国語の表示の問題も付け加えておきます。Linux は utf-8 文字エンコーディングを使用しているため、サーバー側でエンコーディングが指定されていない場合や静的ページでエンコーディングが宣言されていない場合、ブラウザはデフォルトでページを GBK エンコーディングでレンダリングします。そのため、デフォルトでは、中国語が返された場合、ブラウザは gbk を使用して utf-8 エンコーディングを解析しますが、明らかに文字化けが発生します。このとき、nginx のロケーション ブロックにヘッダーを積極的に追加して、正しいエンコーディングを出力する必要があります。追加する内容は次のとおりです。add_header add_header Content-Type 'text/html; charset=utf-8' ; このようにして、次の図に示すように、ブラウザは使用しているエンコーディングを認識します。

または、add_header 行をcharset utf-8変更することもできます。

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

以下もご興味があるかもしれません:
  • NginxはJsonインスタンスを直接返します
  • Nginx ログを JSON 形式に変更する方法
  • nginxでjsonまたはテキスト形式を返す方法
  • nginx で JSON 形式でログを記録する設定例

<<:  JSキャンバスは描画ボードと署名ボードの機能を実現します

>>:  MySQL データベースのマスター スレーブ分離のサンプル コード

推薦する

Vueはテーマ切り替えのための複数のアイデアを実装します

目次テーマを動的に変更する最初の方法: 動的コンポーネント2番目の方法はルーティング分離です要約する...

js のループメソッドとさまざまなトラバーサルメソッド

目次forループwhileループdo-while ループループのネストトラバーサルメソッド~のために...

CentOS 8にJenkinsをインストールする方法

CentOS 8 に Jenkins をインストールするには、root アカウントまたは sudo ...

Linux での MongoDB のインストールと設定のチュートリアル

MongoDBインストールYumを使用してインストールすることを選択する1. repoファイルを作成...

URL を入力すると、バックグラウンドでは具体的に何が起こるのでしょうか?

ソフトウェア開発者は、ネットワーク アプリケーションがどのように動作するかを階層的に完全に理解してい...

ウェブ標準学習リソースの素晴らしいコレクション

これらの仕様は、下位互換性のあるドキュメントを Web 上で公開し、できるだけ幅広いユーザーがアクセ...

Blazor における CSS 分離の問題

1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...

td セルを結合した場合の td 幅の問題

以下の例では、名前が入っている td の幅が 60px のとき、2 行目の文字数が少ない場合は正常に...

Linux ファイル管理コマンド例の分析 [表示、閲覧、統計など]

この記事では、Linux ファイル管理コマンドについて例を挙げて説明します。ご参考までに、詳細は以下...

Docker が占有するディスク領域をクリーンアップする方法

Docker は多くのスペースを占有します。コンテナを実行したり、イメージを取得したり、アプリケー...

シンプルな計算機を実装するためのネイティブ js

この記事の例では、参考までに簡単な計算機を実装するためのjsの具体的なコードを共有しています。具体的...

コードの互換性を高めるために、HTMLを次のように記述します。

たとえば、スクリーン リーダー ソフトウェアを必要とするユーザーなどです。フロントエンド開発者として...

Vueフィルターの詳細な説明

<本文> <div id="ルート"> <h2&...

MySQL でデータベースを作成した後、ユーザー 'root'@'%' によるデータベース 'xxx' へのアクセスが拒否される問題を解決する

序文最近、仕事で問題が発生しました。データベースを作成した後、データベースに接続するときにエラーが発...

DockerコンテナでLNMPをコンパイルする例

目次1. プロジェクトの説明2. Nginxイメージの作成3. MySQLイメージの作成4. PHP...