問題タブ [nginx-module]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Nginx モジュール: フィルターからリダイレクトする方法は?
フィルターを使用して処理を行うカスタム nginx モジュールを作成しています。フィルタの設定は次のようになります。
このフィルターでいくつかのロジックを処理していbody
ますが、特定の条件で、クライアントのブラウザーで localhost へのリダイレクトを実行したいと考えています。フィルター本体のコードは次のようになります。
私が試したこと:
- Location ヘッダーと headers_out.status を 302 に設定しますが、クライアントに空の応答を返します
- headers_out.location を設定しますが、これはまだ空の応答を返します
- ngx_http_send_header(r) を呼び出しますが、これは NGX_ERROR 応答を返します
クライアントへのリダイレクトで応答するにはどうすればよいですか?
c - Nginx モジュール コード error_page ディレクティブの問題
ModSecurity WAF を活用して、NGINX で危険と見なされる tx をブロックしています: https://github.com/SpiderLabs/ModSecurity https://github.com/SpiderLabs/ModSecurity-nginx
私の問題はここにあります: https://github.com/SpiderLabs/ModSecurity-nginx/issues/182
私の問題の TLDR は、nginxerror_page
ディレクティブが、GET へのリダイレクト中に元のクライアントから送信された HTTP リクエスト メソッド ヘッダーをリセットすることです。error_page
これにより、クライアントが実際に POST を送信し、リバース プロキシ呼び出しでアップストリームのタイムアウトが発生した場合にNGINX がリダイレクトにヒットしたときに、クライアントが GET などで HTTP ボディを送信したことを報告する WAF の誤検知ログが発生します。
これを修正するには、このファイル セクションに何かをハックするか PR する必要があるようです: https://github.com/SpiderLabs/ModSecurity-nginx/blob/master/src/ngx_http_modsecurity_rewrite.c#L145
sudo コードで次のようなことを目標にします。
そして、上記の sudo コードを解決できなかったのはここです。error_page
元のクライアントの http メソッド ヘッダーを格納するために、フェーズと内部リダイレクト全体で保持できる tx コンテキスト セーフ変数をここで作成するにはどうすればよいでしょうか。
私はこれらのNGINXページガイドにたどり着きましたが、これまでのところ、私が望むものに実際に切り込んでいるサイコロはありません: https://www.evanmiller.org/nginx-modules-guide.html
この問題を理解し、サンドボックス環境でテストできるものに私の sudo コードを変換できる可能性がある NGINX / C の第一人者を探しています。
NGINX error_page ディレクティブの呼び出しを廃止する余裕はないことに注意してください。したがって、上記の sudo コードの解決策が必要だと思います。
ありがとう!
nginx - Nginxマップリダイレクトキャプチャ正規表現/クエリ文字列のキャプチャと新しいへのリダイレクト
map ディレクティブを使用して nginx(openresty) で一括リダイレクトをセットアップしようとしていますが、ソース URL から正規表現/クエリ文字列をキャプチャして宛先 URL に転送する際にいくつかの問題に直面しています。以下は私のセットアップのようなものです
nginx.conf は次のようなものです
サーバーブロック
新しいリダイレクト マップには以下のリダイレクトが含まれます
~^/test/123/(\w+)(\w+).*$ /US/en/test/$1-$2;
これはうまく機能していますが、以下の文字列を取得するのに苦労しています
- 正規表現キャプチャの URL の一部
/Product.html?ProdNo=A5441&Brand=COMPANY
新しい URL でのキャプチャ
2.正規表現キャプチャの URL の一部
新しい URL でのキャプチャ
どんな助けでも大歓迎です、乾杯!