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
220
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.2k
Cluster AutoscalerをTerraformとHelmfileでデプロイしてPrometheusでモニタリングする / Deploy the Cluster Autoscaler with Terraform and Helmfile, Monitor with Prometheus
int128
3
1.6k
認証の仕組みとclient-go credential plugin / authentication and client-go credential plugin
int128
7
7.2k
CLIでOAuth/OIDCを快適に利用する
int128
0
720
AppEngine × Spring Boot × Kotlin
int128
0
83
いつものJIRA設定
int128
1
160
Swaggerのテンプレートを魔改造した話 / Customize Swagger Templates
int128
1
4.6k
本番環境のリリースを自動化した話
int128
0
680
Swagger × Spring Cloud
int128
0
82
Other Decks in Technology
See All in Technology
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
750
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
Can We Measure Developer Productivity?
ewolff
1
150
Lambdaと地方とコミュニティ
miu_crescent
2
370
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
170
AGIについてChatGPTに聞いてみた
blueb
0
130
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
200
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
150
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
300
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
KATA
mclloyd
29
14k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Typedesign – Prime Four
hannesfritz
40
2.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Visualization
eitanlees
145
15k
Rails Girls Zürich Keynote
gr2m
94
13k
Raft: Consensus for Rubyists
vanstee
136
6.6k
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を頼む