Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

リバースプロキシでPOSTされた内容に値を追加する方法(NGINX)

More than 1 year has passed since last update.

初投稿になります。ミドルウェアエンジニアのラッシーです。よろしくお願いします。
今回やりたかったことは、リバースプロキシーを経由する通信のPOST値を書き換える orパラメーターを追加するというもの。果たして可能なのか…。
リバースプロキシにNGINXを使うのが一般的なのかは知らないが、泣きそうな思いで探した結果NGINXを使うのが一番まともそうだったので、ベースとするミドルウェアはNGINXとした。

必要なもの

・普通のNGINX(別にコンパイルしても良いけど、yumとかapt-getとかで入れたやつでOK)
・気合

結論

初めて見たが、「proxy_set_body」なる設定項目があるようだ。
NGINX設定ファイルのserver設定内にあるlocation配下に次のように記述してやればよい。
dokoka.conf

(略)
location /dokoka/ {
    proxy_pass https://tensou.xxx;
    proxy_set_body $request_body&param1=val1&param2=val2;
}

用法

検索しても中々出てこないので使用頻度低いのかなとも思ったが、あまり知られていないから?と勝手に妄想したり。
例えば、 AJAXで認証突破するためにPOSTでIDとパスワードが必要なんだけど、JavaScriptに書いたら確実にバレるじゃんと言うこの状況。この場合は、IDだけ、POSTしておいてリバースプロキシ側でパスワードを付加してやるとパスワードを知られることなしに認証を突破できる。
通常こういう時は、PHPとかRubyとかPythonのプログラムを一枚噛ませて処理したりするのだが、POSTの値を追加するためだけにアプリケーションサーバーを立てるのはなんだか悔しいし、メンテナンスも結構手間だったりする。以上、ちょっとサーバーのことを知っている、ミドルウェアエンジニアの投稿でした。

lassi
ミドルウェアエンジニアをやらせてもらっています。 Python(主要)6ヶ月、PHP3年、JavaScript2年半。 Pythonが今の会社のメイン言語ですが、まだ半年と経験も浅いので勉強中です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away