Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Webサーバ勉強会 #60 - #76
Search
Hidetake Iwata
November 02, 2010
Technology
0
270
Webサーバ勉強会 #60 - #76
Webサーバ勉強会
https://atnd.org/events/9124
Hidetake Iwata
November 02, 2010
Tweet
Share
More Decks by Hidetake Iwata
See All by Hidetake Iwata
Rewrite Go error handling using AST transformation
int128
1
1.3k
Cluster AutoscalerをTerraformとHelmfileでデプロイしてPrometheusでモニタリングする / Deploy the Cluster Autoscaler with Terraform and Helmfile, Monitor with Prometheus
int128
3
1.8k
認証の仕組みとclient-go credential plugin / authentication and client-go credential plugin
int128
7
7.7k
CLIでOAuth/OIDCを快適に利用する
int128
0
950
AppEngine × Spring Boot × Kotlin
int128
0
140
いつものJIRA設定
int128
1
210
Swaggerのテンプレートを魔改造した話 / Customize Swagger Templates
int128
1
4.9k
本番環境のリリースを自動化した話
int128
0
810
Swagger × Spring Cloud
int128
0
120
Other Decks in Technology
See All in Technology
マイクロリブート ~ACEマインドセットで実現するアジャイル~
sony
1
370
【M3】攻めのセキュリティの実践!プロアクティブなセキュリティ対策の実践事例
axelmizu
0
150
ある編集者のこれまでとこれから —— 開発者コミュニティと歩んだ四半世紀
inao
4
3.1k
プログラミング言語を書く前に日本語を書く── AI 時代に求められる「言葉で考える」力/登壇資料(井田 献一朗)
hacobu
PRO
0
160
今、MySQLのバックアップを作り直すとしたら何がどう良いのかを考える旅
yoku0825
1
380
なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える
mizzy
52
17k
身近なCSVを活用する!AWSのデータ分析基盤アーキテクチャ
koosun
0
390
AIと共に開発する時代の組織、プロセス設計 freeeでの実践から見えてきたこと
freee
3
700
エンジニア採用と 技術広報の取り組みと注力点/techpr1112
nishiuma
0
140
Quarkusで作るInteractive Stream Application
joker1007
0
140
AIでテストプロセスを自動化しよう251113.pdf
sakatakazunori
0
140
クレジットカードの不正を防止する技術
yutadayo
17
7.5k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
KATA
mclloyd
PRO
32
15k
Done Done
chrislema
186
16k
Facilitating Awesome Meetings
lara
57
6.6k
How STYLIGHT went responsive
nonsquared
100
5.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
970
How to Think Like a Performance Engineer
csswizardry
28
2.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Designing for Performance
lara
610
69k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
670
Transcript
Webサーバ勉強会 #60~#76 @int128 (いわてぃ)
Introduction @int128 http://d.hatena.ne.jp/int128/ ソフトウェア&インフラエンジニア 大きなSI屋で働いています。 自宅サーバが好きです。 最近、インフラ設計書を公開しました。
17 modules 60 mod_actions 61 mod_speling 62 mod_userdir 63 mod_alias
64 mod_rewrite 65 mod_proxy 66 mod_proxy_balancer 67 mod_proxy_ftp 68 mod_proxy_http 69 mod_proxy_connect 70 mod_cache 71 mod_suexec 72 mod_disk_cache 73 mod_file_cache 74 mod_mem_cache 75 mod_cgi 76 mod_version そんな時間配分で大丈夫か? 16秒 × 17 modules =272秒
大丈夫だ、問題ない
Agenda 独断と偏見で並び替えてお送りします。 1. mod_alias 2. mod_userdir 3. mod_rewrite 4. mod_proxy
(http/ftp/connect/balancer) 5. mod_cache (mem/disk), mod_file_cache 6. mod_cgi 7. mod_suexec 8. mod_actions 9. mod_speling 10. mod_version
(1) mod_alias ドキュメントツリーにファイルシステムをマップする。 Alias /images /misc/data/images # Order allow, denyをお忘れなく
AliasMatch ←Aliasの正規表現 Redirect RedirectMatch RedirectPermanent ←301を返す RedirectTemp ←302を返す ScriptAlias ←Aliasのcgi-script版 ScriptAliasMatch
(2) mod_userdir ユーザのホームディレクトリを公開するためのモジュール。 UserDir public_html http://example.com/~int128/index.html →/home/int128/public_html/index.html 絶対パスでもOK。(例: /var/www/home) パスは複数候補を書ける。
UserDir disabled UserDir enabled user1 user2 user3 特定のユーザだけホームディレクトリを有効にできる
(3) mod_rewrite ルールに基づいてURLを書き換える機能を提供する。 RewriteCondで条件式、 RewriteRuleで動作(リライト、リダイレクト)を指定する。 RewriteCond %{HTTP_USER_AGENT} DoCoMo [OR] RewriteCond
%{HTTP_USER_AGENT} SoftBank RewriteRule ^/$ /mobile/ [L] 携帯電話からトップページへのアクセスはケータイコンテンツを返す。 使いすぎに注意。ご利用は計画的に。 JMeterでテスト駆動構築がおすすめ。
(4) mod_proxy リバースプロキシ、フォワードプロキシを提供する。 リバースプロキシ DMZからTrustへのリクエスト転送に使う。 mod_proxy_balancerを組み合わせると ロードバランスも可能。 フォワードプロキシ TrustからインターネットにGETする場合など。 mod_proxy自体はキャッシュしてくれない。
クライアント mod_proxy httpd httpd
(4) mod_proxy (続き) 必要なプロトコルを組み合わせて LoadModule すればおk • mod_proxy (本体) ◦
mod_proxy_http (HTTPプロキシ) ◦ mod_proxy_connect (SSL/CONNECTプロキシ) ◦ mod_proxy_ftp (FTPプロキシ) ◦ mod_proxy_ajp (AJPプロキシ) • mod_proxy_balancer (ロードバランサ) ProxyPass /ap http://172.16.3.1/ap ProxyPassReverse /ap http://172.16.3.1/ap タイムアウト、フェイルオーバ時間に注意する。 (上位LBを含めた)シーケンス図を書いて整理するとよい。
(5) mod_cache RFC2616のコンテンツキャッシュ制御を提供する。 •mod_disk_cache (ディスクキャッシュ) •mod_mem_cache (メモリキャッシュ) デフォルトでは、クエリ無しで、レスポンスヘッダに Last-Modified, Expires,
ETag のいずれかが付いていればキャッシュする。 リバースプロキシの性能を飛躍的に向上できる。 ただし、キャッシュされる条件、有効期限に注意すべし。
ちなみに、mod_file_cache 起動時にファイルをメモリに読み込むことで高速化するモジュール。 mod_cacheとは別物。 2つの方式を選べる。 •起動時にファイルをmmap()しておく。 •起動時にファイルのファイルハンドルを開いておく。 キャッシュを更新するにはhttpdの再起動が必要。 Experimentalだし使わない方がいいかも。
(6) mod_cgi CGIを使うためのモジュール。 worker MPMではmod_cgidを使う。 以下のディレクティブが使えるようになる。 AddHandler cgi-script .cgi Options
+ExecCGI AcceptPathInfo on ScriptAlias /cgi-bin /var/www/cgi-bin ScriptLog /var/log/apache2/cgi_log
(7) mod_suexec CGIをユーザアカウントで実行する機能を提供する。 例えば、 http://example.com/~int128/index.cgi というリクエストを受けたとき、スクリプトを •apacheユーザで実行する。 ←suEXEC無効 •int128ユーザで実行する。 ←suEXEC有効
suEXECありでビルドされたApacheでのみ使える。 ディレクトリやスクリプトのパーミッションがチェックされる。 期待通り動かないときは suexec_log を参照。
(8) mod_actions メディアタイプやリクエストメソッドに応じて CGI スクリプトを実行す る機能を提供する。 Action application/x-httpd-php5 /cgi-bin/php.cgi AddHandler
application/x-httpd-php5 .php5 *.php5へのリクエストはCGIスクリプトを起動する。 さくらサーバで野良PHPを使うためにActionディレクティブを使った など。
(9) mod_speling リクエストURIのスペルミスを訂正して、それっぽいリソースを返し てくれるモジュール。大文字小文字の間違い、1文字の誤りを訂正 する。 CheckSpelling on やってみた。 •間違ったURLを叩くと、正しいURLにリダイレクトされる。 •候補が複数ある場合は選択ページ(英語)が表示される。
•クエリパラメータには効かない。
(10) mod_version バージョンに依存する設定を書くためのモジュール。 <IfVersion >= 2.2> # Settings for httpd
2.2 or later </IfVersion> 正規表現も使える。 <IfVersion = /2.2.1[123]/> # Workaround for httpd 2.2.11~13 </IfVersion>
ご清聴ありがとうございました 一番いいconfigを頼む