すこぶる.net

技術系備忘録など

nginx

【Nginx】フォワードプロキシを構築する

投稿日:

フォワードプロキシとは

フォワードプロキシを利用することで、接続元のIPを変更および、固定することが可能です。
接続元のサーバが複数台存在し、IP制限をかけてある接続先に対してリクエストをする際に、それぞれのIPアドレスすべてを許可するのは大変ですし、運用上の課題があります。
(仕組みや目的は違いますが、AWSなどではプライベートサブネット内から NAT Gateway を利用し、固定のIPで接続先にリクエストをすることは可能です。)

そこでフォワードプロキシ用のサーバをNginxで構築し、そのサーバを経由させることで、接続元IPの変更を実現します。
(Squidで用意したことはあったのですが、Nginxでやったことはなかったので作業ログを残しておこうと思います。)

フォワードプロキシをNginxで構築する

Nginxでフォワードプロキシを用意します。
ngx_http_proxy_connect_module というモジュールをビルドする必要があるため以下の手順でインストールしてください。
事前に必要なものをインストールしておきます。
※ Nginxの対応バージョンは https://github.com/chobits/ngx_http_proxy_connect_module を確認してください。
nginx をダウンロードし、フォワードプロキシに必要なモジュールを配置しインストールを実行します。
確認
運用のことを考えて、Systemdで管理するようにしましょう。
以下のように、502 エラー になるときがある。
その際は resolver 8.8.8.8 ipv6=off; を追加設定・変更するとよい。

 

まとめ

プログラムからフォワードプロキシを実行する際は、それぞれ適当なライブラリやオプションを使用して、上記で作成したNginxを経由するようにしてください。
アクセス先のログには、接続元のIPがフォワードプロキシで利用したNginxサーバのIPになっていることが確認できると思います。
先ほども上げた通り、仕組みや目的は違いますが AWS NAT Gateway 等を使用することで接続元のIPを固定したり変更したりすることは容易ですが、今回のフォワードプロキシが何かの参考になれば嬉しいです。
ただしクローラーとして IP制限を回避するための利用など、合意の取れていないサービスに対して害となるような利用は控えるように注意してください。

-nginx
-

執筆者:

関連記事

【Nginx】キャッシュ作成時のバックエンドへのリクエストをproxy_cache_lockで制限する

概要 Nginx でキャッシュの有効期限が切れたとき、一勢にリクエストがバックエンドに流れることになります。。 そうなると、当然バックエンドサーバの負荷が大きくなりサービス障害につながるので注意が必要 …

【Nginx】DoS対策_limit_req_zone

Nginx で DoS 対策を行う方法 Web サイトを公開するにあたり、Nginx で簡単な DoS 攻撃対策を行う方法を紹介します。特別な方法ではなく最初から Nginx にある機能の紹介です。 …

【Nginx】Amazon S3へリバースプロキシ

Nginx から Amazon S3 へリバースプロキシ 今回は Nginx から Amazon S3 へリバースプロキシする方法について触れたいと思います。 ( 以前はプライベートな S3 へのリバ …

Nginxでconfigチェックした時にSSLエラーがでる「SSL_CTX_use_PrivateKey_file」

Nginxの設定ファイルが正しく記述されているかテストするときに、「nginx -t」コマンドを実行しテストします。 その実行時、下記のようなSSLに関するエラーが出ました。 [crayon-66e8 …

HTTPS化に向けてWebサーバでSSL設定をするときのコツ

概要 Webサイトのセキュリティが案じられている現状で、各サイトのHTTPS(SSL化)への移行が急速に進んでいる。 GoogleもHTTPSサイトへの移行を推奨しており、SEO観点でも大きく影響して …