#138 Nginx実践ガイド

2023/5/3 ·

  • さあやってまいりました今月の一冊すごい続いてますねこちらのコーナーはですね毎月一冊技術書を読みアウトプットするというコーナーでございますということで今月の一冊はですねインプレスより出版されておりますIT技術者のための現場ノウハウエンジンX実践ガイドというのをね



  • 読んできました正確に言うと最後の1章まだ読めてないんですけど最後にみたいなやつだ多分最後にの前の1章ですねエンジンXかはい



  • まあなんとなくやってますよまあそうですねこちらも僕長らく積んでた本のうちの一冊なんですけどそろそろ読んどこうと思って最近ちょっとエンジンXに関する質問が多かったのでああそうなんですねはいっていうのでちょっとね読んでみましたでなので今日はですねエンジンXの魅力っていうのを順平でも分かるようにまとめてきましたありがとうございますありがとうございますお願いしますってことでですね



  • まずエンジンXと何かっていうところで多分以前やりましたよねアパッチとかと揃えて一緒に紹介したことがあると思うんですけどじゅんぺいくんに質問ですエンジンX何でした梅干しみたいな顔してるぞサーバーみたいなサーバーソフトウェア合ってるよ何してるんですかうわぁ



  • これなんだっけ牛角の話したやつでしたっけあーそうかも牛角の食べ放題で注文したらお店の人が来てお肉を運んできてくれるけどその運んできてる店員さんがウェブサーバーだよねみたいな話をした記憶がありますねそうそうそうそうってことは中介役みたいなうん



  • 命令を受け取ってそれを元にデータとかを表示する持ってくるとかのやつちょっと頑張りすぎたな頑張りすぎですかちょっと頑張りすぎたかもね今ウェブアプリケーションの部分も入っちゃってたかもって感じするんですけどHTTPリクエスト受け取ってですねそれをアプリケーションに伝えますと



  • あとのは処理アプリケーションがやるんですけど返ってきたデータをまた受け取ってhttpレスポンスにして返しますよっていう復習しますそういったツールがエンジンXでございますと何が嬉しいんだってちょっと思ってしまうかもしれませんがあれですね余計なリクエストをねそんな目に打ちないよって断ってくれたりとかそういう中解でいろいろ遮ったりすることでウェブアプリケーションに負担をかけずパフォーマンスが出せると



  • っていうのがいいことですねそういうことですこのエンジンXの特徴ですねまずオープンソースで無料で使えますよっていうのが一つあります一応エンジンXプラスって有料版もあるらしいんですけど知りませんそうなんですねでも基本的になんかだいたい無料で使ってますよねこれ何が違うんだろうなプラスサポートがついてるとかなんだろうねパフォーマンスが変わるわけないよね変わるか変わることあんのかいやー変わるとは限り思えないですよねあんまりまあ



  • 変わらないにしても結構無料版でも満足できると思います変わるにしてもかあとはですねウェブサーバーとしても使えますしリバースプロキシとしても使うことができます



  • 出ましたリバースプロキシー今日はですねじゅんぺいくん絶対リバースプロキシー知らないだろうなと思ってこれだけ持ち帰ってもらおうかなと思ってますいいですね持ち帰るべきものを定義するのはいい話の上等手段です持ち帰りますちょっと後にしますまずはちょっと特徴を言い切るんですけどあとは性能が高いです自分で言っちゃうのがすごいですね僕のいいことは顔がいいですみたいな話ですね足が速いですみたいななるほどなるほど



  • 性能いいですよとプラス実は新機能への対応も早いらしいです



  • 新機能新機能への対応が早いってどういうこと例えばですけどhttp2が出た時対応が早かったらしいです新しいプロトコルに対する対応が早いってことですねそういうことですね新機能というか新仕様というかそうですね一応この本の中だと機能って書いてましためっちゃ納得いかないんだけどそれお前の都合やろって思うそれに対応する仕事の速さが早いですってことですかそう



  • 裏に優秀な人たちがいっぱいいるんでしょうねオープンソースなんでなるほどなんかアパッチとかそういうのってもともとデフォルトで用意されてるデフォルトで組み込んでるOS多いんですけどLinuxかLinuxとかだと多分最初から入ってるよねHTTPとかインストールのオプションによりますけどでも入りますね入ります入ります



  • なので非常にかつて世間を接見してたんですけどエンジンXがぐんぐん伸びてきてますよってことですごいよねって言ってましたすごいな使ってる人が増えてるよねってことはすごいよねって言ってましたそれはすごい



  • 全然いっぱい見たことありますしなんなら脳死で使うぐらいのものですねそうですねアパッチと比べてどうなのってとこですとまず高負荷での性能が高いですこれ仕組みの部分関係あるんですけど



  • プロセスを2つに分けてるらしいんですよマスタープロセスとワーカープロセスってのがあってマスターが多分全体をコントロールしてる感じですかねワーカーがその細かいリクエストとか処理してるっぽいんですけどアパッチってリクエストごとにプロセスボーンって立ち上げて頑張ってるんですけどなんかこのエンジンXはですね1つのプロセスで複数リクエストをさばけたりするんで負荷が高まった時にいちいちプロセス立ち上げなくていいっていうオーバーヘッドの軽さ



  • があって高負荷かかっても性能が維持できるよっていう特徴があるっぽいですね作った人すごいな本当に天才だねあと意外と設定ファイルシンプルっていうまあそうかそうですね



  • 僕ちょっとアパッチばっか使ってたせいでアパッチの方が分かりやすいなと思ってたんですけどいざしっかり読んでみると確かにシンプルでしたそうなんですねあんまり意識して使ったことないです僕はそこはちょっとよく分かんないなんか少ない記述で同じこと書けるみたいなそうなんだっていう感じでちょっと確かにシンプルでしたねはいはいはいはい



  • この本を読むとですねエンジンXの何が学べるのっていうところでこれは本当にその各章を紹介してるみたいな感じなんですけどもちろん今言ったようなエンジンXの特徴だけではなくてですねインストールの方法からですねサーバーの構築の方法とかあとはねセキュリティ周りであったりパフォーマンスだったりとか結構コアな部分までしっかり紹介されてます



  • はいはいはいなので多分これエンジンX関係なく普通にウェブサーバーというものがどういう設定すると良くなるのかみたいな結構抽象的な部分というか何でしょうねベストプラクティスみたいな話ですかそう結局そのエンジンXってプログラミングするわけじゃなくて設定ファイル書くだけじゃないですかその設定ファイルの何



  • ドキュメントってこと?そんなところに近いですねその設定を考える上で必要な周辺知識ないと分かんないんですよやっぱりなのでHTTPの仕組みというかヘッダコーナーっててみたいな裏側では実はこういうことしてるんだよみたいな根本的な仕組みの部分とかあとログどう残すかとかログのローテーションの部分とかほう



  • こんぐらいの期間がいいよってことそれともなんかそのローテーションの設定の仕方ってことそうで場合によるとは書いてるんですけどまあこういうタイミングで消したりするよみたいな参考になる部分あったりとかあとアプリケーションとのその連携の部分とかもなんかあるじゃないですかCGIとかファストCGIとかはいはいはい僕ずっとそれ意味わかんねえなと思ってたんですよ意味わかんねえなと思ってたんですよ言語ってCGIと何が違うんだろうみたいなうんうん



  • CGIって何ですかCGIはですねアプリケーションとかってさ例えばRubyだったらRubyで動かすしPHPだったらPHPで動かすしPythonだったらPythonみたいな言語が入ってるじゃないですかあれとウェブサーバーの仲介役みたいなのがねCGIらしいっすへーなんか間に入ってこううまく通信つなげてくれるみたいないるんですねそういうやつなんかたまにサーバー設定いじってるとCGIうんたらかんたらみたいな



  • なんだこれCGIって出てきたけど何してるんだろうみたいなのがよく分かってなかったんですけどその辺何してるかとかっていうのがざっくり書かれてるへー間に多分プログラムは例えばレスポンス返すにしてもレスポンスしか作ってくれなくて周辺のヘッダーやら何やら通信に必要なヘッダーとかその辺いろいろ付け足してくれてるってことですかヘッダー付け加えてるのかななんかねデーモンらしいっす



  • 何のアプリケーションの言語の言語のデーモンやってくれてるっぽいです受けてくれるってことリクエスト常駐してくれるみたいなデーモンはデーモンプロセスなんか裏側で実際に動いてくれるやつってイメージですデーモンってでもなんかそういうぐらいなんでなんて言うんでしょうあれですね普通のプロセスってコマンド打った時に動くじゃないですか



  • デーモンはずっと常駐して見張っててそいつの監視対象が何か起きた時に動いてくれるやつみたいなイメージですね張り込みしてる警察と同じだよねスピード違反してるやつ見つけたら動き出すみたいななるほど合ってます?大体合ってますデーモンですね普通に実際にちゃんと動かしてるやつはいてそいつがちゃんといい感じに動いてるかどうかを監視してくれてるのがデーモン



  • 実際に動いてるやつも一緒かもしれないけどずっと動いてるやつっていうイメージだけでしょずっと張り付いて動いて見張ってくれてるみたいな多分それが見張ってる対象がエンジンXとかそういうHTTPなんでしょうねっていうウェブサーバーソフトかっていうのがCGIらしいんですけどここじゃないんですよはいすいません



  • っていうまあねそのウェブサーバー周りのこといろいろ知れますよとでこのエンジンXはですね先ほども言った通りウェブサーバーとしても使えますしリバースプロキシーとしても使えますよということでですねリバースプロキシー講座お願い移っていこうかなとしますお願いしますプロキシーとかリバースプロキシーってたまに見ないですかなんかWindowsとかだったら設定するときにプロキシーみたいなの設定することないですかなんか



  • 自分で設定することは僕はあんまりないですけど会社ならあるんじゃないかなと思いますなんかありそうよねなのでプロキシについて知っておくと開発にとって何か役に立つわけじゃないんですけど知ってた方がエンジニアとしてはいいかなっていうちょこちょこ聞くけどなんだろうなとは思ってますまずプロキシの意味ですね代理人っていう意味があります



  • 普通に英単語として英単語として本当にやってることも代理人ですねまずプロキシーって言った時に2種類あるんですよフォワードプロキシーってやつとリバースプロキシーってやつ2つあります名前めちゃめちゃかっこいいんですけど本当にやってることはしょぼいですしょぼくはないかまずフォワードプロキシーですねまず僕らいつもPC使ってお仕事してますインターネットつなぎますなんですけど



  • その時って多分今だと直接ルーターに通信ピューンと飛んでそのルーターがインターネット接続してみたいなことしてると思うんですよなんですけどこのプロキシーっていうのを挟んでおくとまずPCからそっちのプロキシーに通信が飛びますそのプロキシーが通信してその返ってきた結果を返してくれるっていうことをするんですね



  • 代理人ですね代わりにちょっと取ってきたやつってお願いするっていうそれをすると何が嬉しいんですかねめんどくないだって一個挟むのいや今思ってます早いんですか早くなるよ一個挟んでるのに場合によっちゃう常にじゃないよなるほど早くなるんですかなりますよほう



  • 場合によっちゃねはい場合によってなんでかっていうとまずフォワードプロ機種が主にやってることって多分いろいろできるんですけどメジャーな使い方はキャッシュとフィルタリングなんですよはい



  • で早くなるって言ったのはそのキャッシュが効いた時ですね例えば僕がなんかこのページ開きましたとそのページキャッシュしておきますと次じゅんぺい君が同じページアクセスしようとしたらもうネットに通信飛ばさないでそいつがそのまま返してくれるんですよなので早くなるっていうなるほどそのプロキシっていうのもいろんな人でいろんな人いろんな人で一台を共有することができるってことですかそう



  • イメージその会社だったら例えばオフィスに60人いますと60人全員そのプロキシー経由で飛ばすみたいな感じですねそれをすることによってキャッシュできるんで何回も同じページ開く時とかはもう実は外にネット繋がずに中だけで通信できちゃうんで早くなることがありますねどうせウェブサイトなんてね同じサイト開くことも多いでしょうっていうので



  • 早くすることもできますとただキャッシュされてないページは多分遅くなりますね挟んでるの普通にやっぱそうなんですねなると思うそう思いますよあとはもう一個フィルタリングフィルタリングは例えばですけどこのサイトはもう絶対アクセスすなみたいなサイトにアクセスしようとしてたらここに1台PCあるんでチェックできるわけですよなるほど弾けるわけですよ



  • なんかあれですね例えば会社のパソコンじゃないなさっきのりさんの言ってたオフィスの環境を想像してくださいと仕事中にネットフリックスなんて見んなというのでネットフリックスをブラックリストにしておきますとプロキシの方でそうするとネットフリックス見ようとした社員がプロキシ経由でアクセスするんでネットフリックスにアクセスできませんとまあそんな使い方ですねなるほどそういうことですだから誰がどこにアクセスしようとしたかっていうログも多分取ってるんかね取ってます取ってますあーうん



  • 完全監視社会です気をつけますNetflix見ないように気をつけますあとネットワーク的なところで言うとグローバルIPを各PCに振られてないと思うので確かに外から見た時のグローバルIPがプロ機種だったりすることもあるかもしれませんね別のこともあると思いますけど端末のプライベートは



  • IPアドレスをそのプロキシは知っててそこで通信してるありがとうございますわかってきてるね素晴らしい続きお願いしますこれがフォワードプロキシですね僕ら使ってる側の方の手前にいるやつこれがフォワードプロキシですよリクエスト飛ばすときだいたいクライアント発信なんでだからフォワードなんですかねそう



  • 違うか相対的だからそっちの使い方最初に思いついたからフォワードなのかなリバースプロキシ作った時にあっちどうしよっかなみたいなフォワードかなみたいなそんな感じかも語源は知らないわ逆にリバースプロキシここまで来たらわかるんじゃない確かに推理力が試されるよシャーロックかシャーロックか向こう側から



  • 向こう側って何ですかね向こう側は分かんないですけど別の端末別の端末ヒントエンジンXです確かにエンジンXさんからリクエストが飛んできた時お前かやばいお前かプッシュ通知エンジンXいいよその辺にしようエンジンXは基本受ける側ですなので受け取る側のプロキシーですね



  • ウェブサーバーが例えば10台あったとするじゃんそこに対してリクエストを飛ばした時にその10台の手前にいるやつレシーブプロキシにしてほしいですねその句言はどこかに提出したらいいかどこかは知らないけどでもそういう通称リバースプロキシって言われてますね



  • リバースプロキシもいろんな使い方あるんですけどこいつもキャッシュとかできますわかりやすいですねキャッシュはキャッシュは例えばですけどリクエスト飛んできましたとそしたらウェブサーバーに問い合わせてそのウェブサーバーがさらにアプリケーションに問い合わせてその結果を返してくれますよねそれを結果をそこにキャッシュしておけば次同じリクエストが飛んできたときに後ろのウェブサーバーにリクエストを飛ばさなくてよくなるんですよどうせ同じ結果返すんで



  • エンジンX今ので言えばエンジンXとアプリケーションの間にいるんですかプロキシはプロキシはエンジンXのさらに手前でエンジンXで作られてたりするそうなんですかダブルエンジンX構成だね分かれてるんですかそれって分かれてたりすることもあるエンジンXっていう存在がいてその中にウェブサーバーとリバースプロキシを抱えてるんじゃないですかそれもできる



  • どっちもあるんだそれもできるというかでも基本ウェブサーバーの前にあるんじゃないかなまあそれはそうだと思うんですけど概念としては同じPCでやっちゃったら負荷でかいんじゃねっていうどうなんだろうそうなんですねキャッシュ持たせるとかは別にできそうだけどまあでもそうか一応分けることが多いですね多分



  • キャッシュもそうですしあと多分別の名前でよく聞くんじゃないかなっていうのはロードバランサーですねロードバランサーもリバースプロキシーです彼リバースプロキシーなんですかあれはウェブサーバーの手前でどのウェブサーバーに割り振るかっていうのをやってる代理人なのではいはい



  • あれも実はリバースプロキシなんですよ彼もリバースプロキシなんですねなるほどなのでリバースプロキシ聞いた時はとりあえずロードバランサーファって出てくるようにしておけばなんとなくイメージつかめるようになると思います完璧です完璧になりました持って帰れそうですよかったです持って帰れそうなので聞いた時はあっ



  • ロードバランサーのことですかみたいなそうそう今回ちょっと別の使い方するんだけどって言われるかもしれないけどでもだいたいロードバランサーがキャッシュな気がするなそう思いますよ一応この本だとその2パターンしか紹介されてなかったですねそんなもんだと思いますなんとですね



  • エンジンX僕やったことなかったんですけどその設定ファイルに書くだけでいけるんですよロードバランサーとして動かすこともすごい簡単だなって思いましたいやでもそういうもんですよねロードバランサーって結局ね振り分け先さえ知っておけばできますからねあとなんだルーティングルールかそうだねルーティングルールはいろいろあって接続数



  • うわなんだっけな順番に割り振る方法もあればラウンドロビンですかラウンドロビンだねラウンドロビンでラウンドロビンってのはじゅんぐり一個ずつ割り振っていくみたいなやつなんですけど割り振る方法もあればえーとなんだっけな接続数現在負荷がかかってるPCを避けるようにするみたいな設定もできたりとか



  • あとは常にやってるのはヘルスチェックみたいなのをやってますね生きてるかーいってあなた生きてますかーってウェブサーバーに問い合わせるみたいなっていうのも全部もろもろ設定ファイルにちょろっと書くだけでいけちゃうっていう便利さでしたこれがリバースプロキシーですねなるほどっていうのを簡単にできちゃうよっていうのがエンジンX素晴らしいこの本を読むとですね副次的にいろいろあるなと思ったのは



  • エンジンXもそうですしそもそもウェブサーバーっていうものもそうですし個人的にはHTTPSのところとかもすごいしっかり書かれててためになりましたねこうやって暗号化してるよみたいなその時にね2つフラッシュバックして



  • まずは1個目応用情報データ秘密鍵使って暗号化して解読するみたいな公開鍵暗号方式ですね鍵系のやつ確かこれ共通鍵と暗号鍵混ぜてるんですけど公開鍵ですか間違えた共通鍵と公開鍵両方使ってる両方使ってたりとか



  • っていうのをなんとなく知ってたのをこの本で読んでさらに思い出してあーなるほどプラス以前紹介したですね世界で最も強力な9つのアルゴリズムの中に暗号それにも暗号のやつあるんですけどその時に色を混ぜて第三者に分かんなくするみたいなのを書いてたりするんですよそれについての言及があったりとかしてねなんか色々繋がって面白かったですねすごいちゃんと生きてるちゃんと生きてるそういう意味だとやっぱ



  • 基本情報みたいな広く薄いやつはいいのかもしれないですね勉強の助けになりますねなりますね読んでて繋がるところがあるというか



  • 正直恥ずかしながらエンジンXをゴリゴリにいじったことはないんですけどいじったことあるんですけどねあんま詳しくなかったので今日ののりさんの話を聞いててAWSのアプリケーションロードバランサーとかその辺NLB ALB CLBの話がフラッシュバックして僕は一緒だなと思って聞いてましたもちろんALBとか使った方が楽なんですけどとはいえ自分で一から設定してみるっていうのもちょっと面白いかもしれないですねなるほどね



  • 他にもクラスターの設定とかね今までだと追加でアプリケーション入れる時とかってさYAMとかそういうパッケージマネージャーみたいなやつ使ってインストールしてたんですけどそういうので対応できないアプリケーションもいくつかあるらしくてそういうのとかバイナリーを引っ張ってきてエンジンXと一緒にコンパイルし直すみたいなことやっててねこういう方法あるんだとかも思ったりしましたねムズすぎて意味わかんなかったですけど



  • 実際に使ってみてありがとうございます以上エンジンXのお話でしたありがとうございますエンジンX実践ガイドです実践していきましょう最後エンディングトークいいですかお便り紹介させてくださいラジオネーム翔太さん翔太さんありがとうございます現場で出会ったやばいコメントアウト教えてくださいライトなテーマでございます



  • なかなかないだろうって思うんですけど僕はどうですお二方ありました?ありましたねノリさんはあった?まだないと思いますねじゃあノリさんからいきましょうかコメントアウトってコードの分かんない部分補足するじゃないですかなんとかフラグイコールイコールイコール1みたいなコードがあったんですよその上のコメントになんとかフラグが1の時って書いてましたねおー



  • ドライなんだろうみたいな1の時何か知りたかったのにみたいなでもなんかちょっと気持ちわかるなそういうコメント書いたことあるわ1年目とか研修の時に書きたくなっちゃうんですよねそうなんですよ見ればわかるわって言ってその意図を書け1は何を意味をしてるんやと1の意味が知りてんだけどみたいなわかるしかもなんかデータベース見たら1と2で構成されてるんですよ01じゃなくてそう



  • なんだろうみたいなまあね気持ちわかるなんでゼロからなんだろうって思ってた俺最初もう今ゼロイチでしか考えられないからなかわいいなかわいいんですか1,2の話1,2ちょっとねかわいいエモいな僕いいですか僕現場で出会ったやばいコメントアウトではい



  • ちょっと僕が直接見たというよりは隣の席の僕のメンターだった人が納品されたコードに含まれるコメントアウトでPHPのサーバーかなアプリのプログラムの受入試験かななんかやっててソースコード見てって言ってたんですけどプログラムの一番上のコメントアウトでそのプロジェクトに関する恨みつらみがとうとうと書かれてるっていうえぇ



  • 見たことありますねそれもさ見つからやと思って書いてるよねいや多分なんだっけなこういう納期でやってるせいで俺はこの時間まで働いているプロジェクトのマネジメントとして終わってるみたいなのがやばいねまずねなんで通ってるそのコメントのプッシュいや多分それプロリク作らずに直接プッシュしたのよ多分一人でやってたりとかするのかもしれないですけどね



  • まともにマネジメントされてるようなプロジェクトじゃないなっていうのはそのコメントアウトからは見て取れるんですけど一生超えないと思いますこのコメントアウトのやっぱ都市伝説かと思ってたもん本当にあるんだって思ったそれを見たときなんかさもしストレス溜まったとしてもそこには書かないよなって思う書かないね書かないTwitterに書けよっていう本当ですよねでもなんかねあるらしい



  • そうねちょっと翔太さんの例ではfixmeのタグでここやばいかもとかto doなぜか動くから調査とかって書いてますけどあーでもあるかもなんかif文で条件分岐いっぱいあってここには来ないってやつややばそれやばいねほんとかなみたいな消せやじゃあせめて消してなんかelseで全部エラーにしろそこ入ったら確かに確かにうーん全くもうって思っちゃいますね



  • 全くもうあんまないかもなあるかなトゥードゥはねいっぱいありますけどねなんか作りきれませんでしたみたいな料理ファクタリングみたいなねでもそんな普通だと思うんでそうなんですね



  • コメントよりもコミットメッセージの方が面白いこと多いなマジですか俺見たことない面白いコミットメッセージノリさんが一人で勉強してる時のやつじゃないですよね全然現場のやつなんですけどうわーって書かれててその次のコミットに治ったって書いてあって何かが起きたけど治ったんだまずさうわーでコミットすんなうわーなんだからうわー



  • 治った治ってると思ってそれやばいですねいやいいなぜひ現場であった面白い話貯めておきましょうただね別に面白コミットはね生産性上げないからコメントあると思うんですけど気を付けましょう学生とかに多いんだろうねはいお便りありがとうございましたありがとうございましたまた引き続きお願いしますというわけで今日はNGXのお話でした皆さんも月1冊



  • 技術書を読んでアウトプットしてみてください頑張りましょう僕今4冊ある言ってるわ俺ペース守ってるかもしれない今年?今年?結構ギリだわ今でもギリですねギリギリランギリギリランしてる今挽回しますではまた次回バイバイバイ



  • さあ皆さん次の商品は目玉商品ですこちらめちゃくちゃでかいエンターキーわー大きいこれがあるとストレス発散生産性アップ快適な睡眠もえ枕にしちゃうんですかこちらの商品はお値段など1024円わーお2の10乗



  • そして今番組終了1時間以内にGoogleフォームよりお便りを送った方はちっちゃいスペースキーも付いてきますポケットに入れて持ち運べますね番組の高評価フォローもすると会員割引なんと90%オフほぼただ今すぐご応募

0:00 31:01

#138 Nginx実践ガイド