Successfully reported this slideshow.
httpd.conf
line 1 to 7, 24
Webサーバ勉強会 #1 #study2study
Tue Nov 02, 2010
Naoya Nakazawa (@n0ts)
Tuesday, November 2, 2010
httpd
OS
CentOS 5
Version
httpd-2.2.3-43.el5
Created date at mirror.centos.org
30-Aug-2010 16:57
Tuesday, November 2, 2010
line 1
Tuesday, November 2, 2010
ServerTokens OS
Tuesday, November 2, 2010
ServerTokens - 1
HTTPレスポンスのServerヘッダーの
設定
よく炎上する設定項目の一つ
僕も昔書いた某ブログで炎上しま
すた...
Tuesday, November 2, 2010
ServerTokens - 2
Prod[uctOnly] Apache
Major Apache/2
Minor Apache/2.2
Min[imal] Apache/2.2.3
OS Apache/2.2.3 (Unix)
Full
A...
ServerTokens - 3
次の設定するとセキュリティ的によいとい
われている
ServerTokens Prod
ServerSignature Off
ただしブラウザ側でServerヘッダをチェッ
クしていることもあるため隠さない方が...
server/core.cserver/core.c
2791 static const char *set_serv_tokens(cmd_parms *cmd, void *dummy,
2792 const char *arg)
2793...
line 2
Tuesday, November 2, 2010
ServerRoot “/etc/httpd”
Tuesday, November 2, 2010
ServerRoot - 1
httpdベースディレクトリのパス
この設定があることで、他のディレク
ティブに相対パスで指定することができ
る
デフォルト
/usr/local/apache
Tuesday, November 2, 2010
ServerRoot - 2
server/core.c
2386 static const char *set_server_root(cmd_parms *cmd, void *dummy,
2387 const char *arg)
23...
line 3
Tuesday, November 2, 2010
PidFile run/httpd.pid
Tuesday, November 2, 2010
PidFile - 1
親プロセスIDを記録するファイルを設定する
ServerRoot以下の相対パスでも設定可能
サーバの種類(ServerType)がスタンドアロー
ンのときのみ有効
デフォルト
logs/httpd.pid
Tuesday...
PidFile - 2
server/mpm_common.c
693 /* standard mpm configuration handling */
694 #ifdef AP_MPM_WANT_SET_PIDFILE
695 const...
line 4
Tuesday, November 2, 2010
Timeout 120
Tuesday, November 2, 2010
Timeout - 1
Apacheが、次の3つを待つ時間を秒単位で
設定する
GET リクエストを受け取るのにかかる総時間
POST や PUTリクエストにおいて、次の TCP パケットが届くまでの待ち時間
レスポンスを返す際、TCP の A...
line 5
Tuesday, November 2, 2010
KeepAlive Off
Tuesday, November 2, 2010
KeepAlive - 1
HTTP 1.1の持続的な接続を有効にするかど
うかを設定する
HTTP Keep Aliveとは、1回のTCP接続で複
数のHTTPリクエストを処理する方式
デフォルト:
On
Tuesday, November ...
KeepAlive - 2
運用するサービスごとにオン・オフ
するか決めるべき項目の1つ
mod_statusのKパラメータに関連す
る項目
Tuesday, November 2, 2010
KeepAlive - 3
modules/http/http_core.c
57 static const char *set_keep_alive(cmd_parms *cmd, void *dummy,
58 const char *ar...
line 6
Tuesday, November 2, 2010
MaxKeepAliveRequests
100
Tuesday, November 2, 2010
MaxKeepAliveRequests
- 1
Keep Aliveが有効なときに、1回の接続で
受付可能なリクエスト回数を設定する
通常は1ページに当たりのファイル数+α
デフォルト
100
Tuesday, November 2, 2010
MaxKeepAliveRequests
- 2
modules/http/http_core.c
77 static const char *set_keep_alive_max(cmd_parms *cmd, void *dummy,
78...
line 7
Tuesday, November 2, 2010
KeepAliveTimeout 15
Tuesday, November 2, 2010
KeepAliveTimeout - 1
Keep Aliveが有効なときに、Apacheが次の
リクエストを待つ時間を秒単位で設定す
る
通常はデフォルトより短めに設定する
デフォルト
15
Tuesday, November 2, 2010
KeepAliveTimeout - 2
modules/http/http_core.c
45 static const char *set_keep_alive_timeout(cmd_parms *cmd, void *dummy,
46...
line 24
Tuesday, November 2, 2010
Listen 80
Tuesday, November 2, 2010
Listen - 1
Apacheが待機するポート番号を設定する
Listenディレクティブは、最低1つ以上必
須
デフォルトという概念はない
複数書くことで、複数のポートで待機す
る
Tuesday, November 2, 2010
Listen - 2
形式
Listen [IPアドレス:]ポート番号
設定例
Listen 80
Listen 8080
Listen 192.168.1.1:80
Listen [::]:80
Tuesday, November 2, 20...
Listen - 3
server/listen.c
582 AP_DECLARE_NONSTD(const char *) ap_set_listener(cmd_parms *cmd, void *dummy,
583 int argc, ...
Listen - 3 Cont.
607 if (scope_id) {
608 /* XXX scope id support is useful with link-local IPv6 addresses */
609 return "S...
Questions?
Tuesday, November 2, 2010
Upcoming SlideShare
Loading in …5
×

httpd.conf line 1 to 7, 24

1,579 views

Published on

httpd.conf line 1 to 7,24 at #study2study2

Published in: Technology
  • Be the first to comment

httpd.conf line 1 to 7, 24

  1. 1. httpd.conf line 1 to 7, 24 Webサーバ勉強会 #1 #study2study Tue Nov 02, 2010 Naoya Nakazawa (@n0ts) Tuesday, November 2, 2010
  2. 2. httpd OS CentOS 5 Version httpd-2.2.3-43.el5 Created date at mirror.centos.org 30-Aug-2010 16:57 Tuesday, November 2, 2010
  3. 3. line 1 Tuesday, November 2, 2010
  4. 4. ServerTokens OS Tuesday, November 2, 2010
  5. 5. ServerTokens - 1 HTTPレスポンスのServerヘッダーの 設定 よく炎上する設定項目の一つ 僕も昔書いた某ブログで炎上しま すた... Tuesday, November 2, 2010
  6. 6. ServerTokens - 2 Prod[uctOnly] Apache Major Apache/2 Minor Apache/2.2 Min[imal] Apache/2.2.3 OS Apache/2.2.3 (Unix) Full Apache/2.2.3 (Unix) mod_ssl/2.2.3 OpenSSL/1.0.0a DAV/2 PHP/5.3.2 Phusion_Passenger/3.0.0 [Default] [Conf] Tuesday, November 2, 2010
  7. 7. ServerTokens - 3 次の設定するとセキュリティ的によいとい われている ServerTokens Prod ServerSignature Off ただしブラウザ側でServerヘッダをチェッ クしていることもあるため隠さない方がよ い Kazuho@Cybozu Labs: サーバシグニチャは隠さないのが当たり前 http://labs.cybozu.co.jp/blog/kazuho/archives/2007/09/re_server_sig.php Tuesday, November 2, 2010
  8. 8. server/core.cserver/core.c 2791 static const char *set_serv_tokens(cmd_parms *cmd, void *dummy, 2792 const char *arg) 2793 { 2794 const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); 2795 2796 if (err != NULL) { 2797 return err; 2798 } 2799 2800 if (!strcasecmp(arg, "OS")) { 2801 ap_server_tokens = SrvTk_OS; 2802 } 2803 else if (!strcasecmp(arg, "Min") || !strcasecmp(arg, "Minimal")) { 2804 ap_server_tokens = SrvTk_MINIMAL; 2805 } 2806 else if (!strcasecmp(arg, "Major")) { 2807 ap_server_tokens = SrvTk_MAJOR; 2808 } 2809 else if (!strcasecmp(arg, "Minor") ) { 2810 ap_server_tokens = SrvTk_MINOR; 2811 } 2812 else if (!strcasecmp(arg, "Prod") || !strcasecmp(arg, "ProductOnly")) { 2813 ap_server_tokens = SrvTk_PRODUCT_ONLY; 2814 } 2815 else { 2816 ap_server_tokens = SrvTk_FULL; 2817 } 2818 2819 return NULL; 2820 } Tuesday, November 2, 2010
  9. 9. line 2 Tuesday, November 2, 2010
  10. 10. ServerRoot “/etc/httpd” Tuesday, November 2, 2010
  11. 11. ServerRoot - 1 httpdベースディレクトリのパス この設定があることで、他のディレク ティブに相対パスで指定することができ る デフォルト /usr/local/apache Tuesday, November 2, 2010
  12. 12. ServerRoot - 2 server/core.c 2386 static const char *set_server_root(cmd_parms *cmd, void *dummy, 2387 const char *arg) 2388 { 2389 const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); 2390 2391 if (err != NULL) { 2392 return err; 2393 } 2394 2395 if ((apr_filepath_merge((char**)&ap_server_root, NULL, arg, 2396 APR_FILEPATH_TRUENAME, cmd->pool) != APR_SUCCESS) 2397 || !ap_is_directory(cmd->pool, ap_server_root)) { 2398 return "ServerRoot must be a valid directory"; 2399 } 2400 2401 return NULL; 2402 } Tuesday, November 2, 2010
  13. 13. line 3 Tuesday, November 2, 2010
  14. 14. PidFile run/httpd.pid Tuesday, November 2, 2010
  15. 15. PidFile - 1 親プロセスIDを記録するファイルを設定する ServerRoot以下の相対パスでも設定可能 サーバの種類(ServerType)がスタンドアロー ンのときのみ有効 デフォルト logs/httpd.pid Tuesday, November 2, 2010
  16. 16. PidFile - 2 server/mpm_common.c 693 /* standard mpm configuration handling */ 694 #ifdef AP_MPM_WANT_SET_PIDFILE 695 const char *ap_pid_fname = NULL; 696 697 const char *ap_mpm_set_pidfile(cmd_parms *cmd, void *dummy, 698 const char *arg) 699 { 700 const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); 701 if (err != NULL) { 702 return err; 703 } 704 705 if (cmd->server->is_virtual) { 706 return "PidFile directive not allowed in <VirtualHost>"; 707 } 708 709 ap_pid_fname = arg; 710 return NULL; 711 } 712 #endif Tuesday, November 2, 2010
  17. 17. line 4 Tuesday, November 2, 2010
  18. 18. Timeout 120 Tuesday, November 2, 2010
  19. 19. Timeout - 1 Apacheが、次の3つを待つ時間を秒単位で 設定する GET リクエストを受け取るのにかかる総時間 POST や PUTリクエストにおいて、次の TCP パケットが届くまでの待ち時間 レスポンスを返す際、TCP の ACK が返ってくるまでの時間 デフォルト 300 Tuesday, November 2, 2010
  20. 20. line 5 Tuesday, November 2, 2010
  21. 21. KeepAlive Off Tuesday, November 2, 2010
  22. 22. KeepAlive - 1 HTTP 1.1の持続的な接続を有効にするかど うかを設定する HTTP Keep Aliveとは、1回のTCP接続で複 数のHTTPリクエストを処理する方式 デフォルト: On Tuesday, November 2, 2010
  23. 23. KeepAlive - 2 運用するサービスごとにオン・オフ するか決めるべき項目の1つ mod_statusのKパラメータに関連す る項目 Tuesday, November 2, 2010
  24. 24. KeepAlive - 3 modules/http/http_core.c 57 static const char *set_keep_alive(cmd_parms *cmd, void *dummy, 58 const char *arg) 59 { 60 const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT); 61 if (err != NULL) { 62 return err; 63 } 64 65 /* We've changed it to On/Off, but used to use numbers 66 * so we accept anything but "Off" or "0" as "On" 67 */ 68 if (!strcasecmp(arg, "off") || !strcmp(arg, "0")) { 69 cmd->server->keep_alive = 0; 70 } 71 else { 72 cmd->server->keep_alive = 1; 73 } 74 return NULL; 75 } 76 なんと、「o」と設定することも可能! Tuesday, November 2, 2010
  25. 25. line 6 Tuesday, November 2, 2010
  26. 26. MaxKeepAliveRequests 100 Tuesday, November 2, 2010
  27. 27. MaxKeepAliveRequests - 1 Keep Aliveが有効なときに、1回の接続で 受付可能なリクエスト回数を設定する 通常は1ページに当たりのファイル数+α デフォルト 100 Tuesday, November 2, 2010
  28. 28. MaxKeepAliveRequests - 2 modules/http/http_core.c 77 static const char *set_keep_alive_max(cmd_parms *cmd, void *dummy, 78 const char *arg) 79 { 80 const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT); 81 if (err != NULL) { 82 return err; 83 } 84 85 cmd->server->keep_alive_max = atoi(arg); 86 return NULL; 87 } Tuesday, November 2, 2010
  29. 29. line 7 Tuesday, November 2, 2010
  30. 30. KeepAliveTimeout 15 Tuesday, November 2, 2010
  31. 31. KeepAliveTimeout - 1 Keep Aliveが有効なときに、Apacheが次の リクエストを待つ時間を秒単位で設定す る 通常はデフォルトより短めに設定する デフォルト 15 Tuesday, November 2, 2010
  32. 32. KeepAliveTimeout - 2 modules/http/http_core.c 45 static const char *set_keep_alive_timeout(cmd_parms *cmd, void *dummy, 46 const char *arg) 47 { 48 const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT); 49 if (err != NULL) { 50 return err; 51 } 52 53 cmd->server->keep_alive_timeout = apr_time_from_sec(atoi(arg)); 54 return NULL; 55 } 56 Tuesday, November 2, 2010
  33. 33. line 24 Tuesday, November 2, 2010
  34. 34. Listen 80 Tuesday, November 2, 2010
  35. 35. Listen - 1 Apacheが待機するポート番号を設定する Listenディレクティブは、最低1つ以上必 須 デフォルトという概念はない 複数書くことで、複数のポートで待機す る Tuesday, November 2, 2010
  36. 36. Listen - 2 形式 Listen [IPアドレス:]ポート番号 設定例 Listen 80 Listen 8080 Listen 192.168.1.1:80 Listen [::]:80 Tuesday, November 2, 2010
  37. 37. Listen - 3 server/listen.c 582 AP_DECLARE_NONSTD(const char *) ap_set_listener(cmd_parms *cmd, void *dummy, 583 int argc, char *const argv[]) 584 { 585 char *host, *scope_id, *proto; 586 apr_port_t port; 587 apr_status_t rv; 588 const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); 589 590 if (err != NULL) { 591 return err; 592 } 593 594 if (argc < 1 || argc > 2) { 595 return "Listen requires 1 or 2 arguments."; 596 } 597 598 rv = apr_parse_addr_port(&host, &scope_id, &port, argv[0], cmd->pool); 599 if (rv != APR_SUCCESS) { 600 return "Invalid address or port"; 601 } 602 603 if (host && !strcmp(host, "*")) { 604 host = NULL; 605 } 606 Tuesday, November 2, 2010
  38. 38. Listen - 3 Cont. 607 if (scope_id) { 608 /* XXX scope id support is useful with link-local IPv6 addresses */ 609 return "Scope id is not supported"; 610 } 611 612 if (!port) { 613 return "Port must be specified"; 614 } 615 616 if (argc != 2) { 617 proto = "http"; 618 } 619 else { 620 proto = apr_pstrdup(cmd->pool, argv[1]); 621 ap_str_tolower(proto); 622 } 623 624 return alloc_listener(cmd->server->process, host, port, proto); 625 } 重複したListen設定は取り除かれている Tuesday, November 2, 2010
  39. 39. Questions? Tuesday, November 2, 2010

×