Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Webサーバ勉強会 #60 - #76
Hidetake Iwata
November 02, 2010
Technology
0
150
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
970
Cluster AutoscalerをTerraformとHelmfileでデプロイしてPrometheusでモニタリングする / Deploy the Cluster Autoscaler with Terraform and Helmfile, Monitor with Prometheus
int128
3
1.3k
認証の仕組みとclient-go credential plugin / authentication and client-go credential plugin
int128
7
5.8k
CLIでOAuth/OIDCを快適に利用する
int128
0
270
AppEngine × Spring Boot × Kotlin
int128
0
64
いつものJIRA設定
int128
1
120
Swaggerのテンプレートを魔改造した話 / Customize Swagger Templates
int128
1
4k
本番環境のリリースを自動化した話
int128
0
510
Swagger × Spring Cloud
int128
0
59
Other Decks in Technology
See All in Technology
Optimizing your Swift code
kateinoigakukun
0
1.3k
目指せCoverage100%! AutoScale環境におけるSavings Plans購入戦略 / JAWS-UG_SRE_Coverage
taishin
0
130
チケットNFTの仕組み
sbtechnight
0
330
速習 Machine Learning Lens
asei
1
420
アムロは成長しているのか AIから分析する
miyakemito
1
320
Technologies for developing editors / Webエディタ開発を支える技術
shuta13
1
220
LINE iOSエンジニアの日々 / LINE iOS Engineer Days
line_developers
PRO
1
130
証明書って何だっけ? 〜AWSの中間CA移行に備える〜
minorun365
3
1.9k
lt53
98_justdoit
0
110
エンタープライズ領域でのブロックチェーン・インターオペラビリティの発展 / Enterprise Blockchain Interoperability
gakumura
0
100
私見「UNIXの考え方」/20230124-kameda-unix-phylosophy
opelab
0
140
PCL (Point Cloud Library)の基本となぜ点群処理か_2023年_第2版.pdf
cvmlexpertguide
0
120
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
779
250k
Typedesign – Prime Four
hannesfritz
34
1.5k
Principles of Awesome APIs and How to Build Them.
keavy
117
15k
Happy Clients
brianwarren
90
5.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
270
12k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
13
1.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
50k
Art Directing for the Web. Five minutes with CSS Template Areas
malarkey
196
9.8k
Designing with Data
zakiwarfel
91
4.2k
Writing Fast Ruby
sferik
613
58k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
109
16k
Stop Working from a Prison Cell
hatefulcrawdad
263
18k
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を頼む