【序文】 当プロジェクトの SMS 機能は、第三者に接続することです。第三者からの元の受信確認要求は get 要求でした。トラブルシューティング中、nginx ログを通じて相手からの要求のパラメータを取得できました。最近、別の第三者に変更しました。新しい第三者からの確認要求は post でした。トラブルシューティング中、nginx が特定のパラメータを出力しないことがわかりました。そこで、いくつかの情報を参照し、運用と保守で実験とオンライン調整を行いました。調整後、要求パラメータを取得できるようになり、問題のトラブルシューティングがより便利になりました。 [Nginx は印刷ポストリクエストパラメータを設定します] 1. Nginx 構成ファイル (nginx.conf) を設定して、POST リクエスト パラメータを出力します。中国語の文字化けを防ぐために、http モジュールの log_format に "dm":$request_body を追加し、escape=json を追加します。 log_format メイン escape=json '{ "@timestamp": "$time_iso8601", ' '"remote_addr": "$remote_addr",' '"costime": "$request_time",' '"リアルタイム": "$upstream_response_time",' '"ステータス": $status,' '"x_forwarded": "$http_x_forwarded_for",' '"リファラー": "$http_referer",' '"リクエスト": "$リクエスト",' '"upstr_addr": "$upstream_addr",' '"バイト":$body_bytes_sent,' '"dm":$request_body,' '"エージェント": "$http_user_agent" }'; access_log /var/log/nginx/access.log メイン; 2. 設定前後の効果の比較 1. 送信リクエストのJSON形式 { "結果":[ { "価格":{ "メッセージあたりの価格":0.01, "通貨":"aaa" }, "メッセージID":"ff4804ef-6ab6-4abd-984d-ab3b1387e852", "宛先":"385981178", "送信日時":"2015-02-12T09:58:20.323+0100", "完了日時":"2015-02-12T09:58:20.337+0100", "SMS数":1, "状態":{ "id":5, "グループID":3, "groupName":"配信済み", "name":"DELIVERED_TO_HANDSET", "description":"メッセージが端末に配信されました" }, "エラー":{ "グループID":0, "グループ名":"OK", "id":0, "名前":"NO_ERROR", "説明":"エラーなし", "永続的":false } } ] } 2. postリクエストを設定する前のnginxのプリントアウトの結果は明らかにパラメータをプリントアウトしません 3. postリクエストを設定した後、nginxはパラメータを出力し、パラメータは出力されているが文字化けしていることを発見する 4. 文字化けしたコードを解読する (1) log_format mainの後にescape=jsonを追加する必要があります (2)nginxのバージョンは1.15.1以上である必要があります (3)上記の最終印刷結果を満たす 3. nginxログを表示する必要性 1. より包括的: Java リクエスト ログよりも包括的に、訪問者の IP ブラウザやリクエスト パラメータなどの情報を記録できます。 2. リクエスト数が多い場合、Java プログラムでは処理できません。このとき、Java ログには冗長なアクセス リクエストはありませんが、nginx には冗長なアクセス リクエストがあるため、トラブルシューティングやシステム パフォーマンスの最適化に役立ちます。 【まとめ】 1. ログを通じて問題を素早く特定できます。 2. 問題のトラブルシューティングを行うときは、包括的かつ多面的に検討する必要があります。 Nginx ログ印刷の post リクエスト パラメータを設定する方法についてはこれで終わりです。より関連性の高い Nginx ログ印刷の post リクエスト パラメータについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
Oracle の大きなテキスト データ型 Clob 長いテキスト型 (MySQL ではサポートされて...
目次SQL文を挿入する前にレコードが既に存在するかどうかを確認するSQL挿入時の判断の簡単なコレクシ...
目次1. vue-cli デフォルト プロジェクトを作成する (babel のみを含む) 2. 作成...
使用シナリオ:ジャンプ パスは、傍受された URL に応じて動的に構成する必要があります。これは、イ...
基本環境パゴダ設置サービスパゴダにインストールされた[Pythonプロジェクトマネージャー]パゴダに...
目次1 はじめに2 トリガーの紹介3 トリガーを作成する4 トリガーを表示5. トリガーの削除6 結...
目次プロジェクトでデータベースを操作する3つのステップデータベースを操作するための具体的な手順1: ...
目次1. 背景2. サイレントログインとは何ですか? 3. カスタムログイン状態を維持する方法4. ...
MySQL のデータはディスクに書き込む必要があることは誰もが知っています。ディスクの読み取りと書き...
背景ここ 2 日間 Docker を使用していたところ、コンテナの起動後に date -R の出力タ...
構造(位置)擬似クラスセレクタ(CSS3) :first-child : 指定されたセレクタは、親要...
1 背景最近、Shimo Document のオンライン ビジネスでパフォーマンスの問題が発生しまし...
SELECT ステートメントの完全な構文は次のとおりです。 (7)選択 (8) DISTINCT ...
以前、テーブル結合クエリを書いていたとき、whereとonの違いがわからず、SQLに小さな問題が発生...
1. スロークエリの用途は何ですか? long_query_time を超えて実行されるすべての S...