こんにちは、まだまだ暑い日が続きますね。
最近大量に発生しているというとても大きくて羽の生えた虫にビビりまくっているりです。
今日は業務でよくわからんな???となりまくったリバースプロキシについて調べたり教えてもらったことをまとめようと思います。
自分のためだけにまとめたのでわかりづらいかもしれませんが、何かの役に立てば幸いです。
制作系の人がまとめたものなのでふわっと読んでください。完全に信じるととてもあぶないです。
(社内の人は違うよ~のところがあったら教えてくださるとうれしいです)
悪い人が悪いことをするときに使ってるあれですか・・・?と思っていましたが、そんなに犯罪臭がぷんぷんするものではありません。
大きめの会社さんとかでちょこちょこ見かける出口対策の一つです。こういうやつ。
左から順に地球マークがインターネット、真ん中のサーバのアイコンがプロキシサーバ、右端のPCのアイコンが社内PCです。
この一連の流れが「プロキシサーバを使う」ということらしいです。
インターネットに直接接続するのはプロキシサーバなので、社内PCのIPアドレスなどなどの情報が特定されにくくなります。
社内のPCでうさんくさいサイトにアクセスしていないか、もししていたらいつだれが見たのか、がわかるようになります。
そもそもインターネットにアクセスできるPCを絞ったりユーザ認証をつけたり、はたまたアクセスできるURLを絞ったりできます。
ビットスターでも一部の人はユーザ認証が必要なネットワークにつないでお仕事をしたりしています。(たぶん)
業務上いいのか悪いのか微妙なところではありますが、キャッシュを作って次回アクセス時の表示を早くしたりできます。
一般企業さんだと表示が早くなってよいのかもしれませんね。
インターネットとのやり取りをすべてプロキシサーバを介して行っているので、プロキシサーバの脆弱性を狙って攻撃されるととてもつらいことになります。
じゃあプロキシサーバ自体の対策はどうやってするの?となりますが、ここはきっとインフラつよつよの方が書いたものを読んだほうがよいと思いますのでここでは触れません。(逃げています)
ふわ~っとしていますが、これが今自分が理解しているプロキシサーバの概要です。
次はリバースプロキシについて調べてみました。
リバースプロキシはプロキシの逆です。
プロキシがインターネットへの出口を管理するサーバと称すなら、リバースプロキシはインターネットからのアクセスを管理するサーバです。
左端がインターネット、真ん中がプロキシサーバ、右端がwebサーバだと思ってください。
この流れが「リバースプロキシを使う」ということらしいです。
静的コンテンツと管理システムを分けたりすることができます。MovableTypeを使う人だったらサーバ配信をするためのやつ、と思っていただくと理解が早いかもしれません。
静的コンテンツと管理システムを分けると、もし静的コンテンツが格納されているwebサーバが攻撃を受けても管理システムは無事=大事な情報を守れる、ということになります。つよいですね。
たくさんのアクセスがあるサイトだと、アクセスが集中しすぎると落ちたり遅くなったりします。
同じコンテンツを置いているサーバがリバースプロキシの後ろにあればアクセスを振り分けて負荷を分散させることができるらしいです。
ロードバランサとの違いはこのあたりを見ていただくときっとわかりそう…。
リバースプロキシとロードバランサーの違いとは? – NGINX
そのほか、認証サーバと連携させてシングルサインオンを作ったりするときや、他にもいろいろな使い方があるようです。
ここからは業務でなかなか理解できなかったことを振り返って、どういうことだったのか書いていこうと思います。
リバースプロキシだけでは解決指定なので、もしかしたら特殊な例かもしれません……?
実際に考えて作業してくださったのは弊社のIKSH(インフラとか開発のすごい人)たちです。いつもありがとうございます!!!!今回もありがとうございました!!!!!!!!!
すごく大きいwebサイトのリニューアルを行います。
前述のリバースプロキシってなに?で書いたような、純粋なリバースプロキシの使い方だと実現は難しいそうです。(・2つ目の画像のところとか)
ので、旧サーバにリバースプロキシとwebサーバの役割を持たせ、さらに新サーバもインターネットからアクセスできるようにしていただきました。
最終的には新サーバにすべて移転するので、インターネットからアクセス可能な状態なのは問題ないといえば問題ないよね、というやつです。
新旧どちらのサーバもインターネットからアクセスできる状態になっていれば、画像とかのurlが曖昧なものはリダイレクトで、そのほかのurlが決まっているものはリバースプロキシでなんとかできるかも??
アクセスしてくるユーザは基本的に旧サーバに振られているドメインをたたくので、一番初めにアクセスが来るのは旧サーバです。
実際にどんなコードを書いていただいたかはよくわかっていませんが、ざっくりこのように解決していただきました。
やった~~~~~!!!!!!!!!!!
わかったような気になっていますが、実際全然わかっていないのかもしれません。
が、普段ふわっとしか依頼できていなかった「リバースプロキシ」とはどんなことなのか、依頼内容によってはリバースプロキシでは実現不可能なものもある、ということがふんわりわかった気がするので、今までよりも慎重に事を運べるようになるかもしれないな、と思いました。
デザイン系のチームに所属している自分から見るとインフラや開発のことはどうしても難しく見えるし実際その通りなのですが、何も知らないわからない全部任せます、だとチームで働けないですよね。
どんな言葉でどう話を組み立てたらお互いにスムーズに会話できるのかとか、今は案件のスケジュール的にここだから前後の工程の人とどんなことを話すべきなのかとか、そういうことをたくさん考えられるようになりたいなと思いました。
あとは今日使っている画像は私の手書きなので、もう少し字も絵も上手になりたいです。
り