HTTP apache Version Apache 1 3 x prefork

  • Slides: 16
Download presentation
HTTP 서비스: apache

HTTP 서비스: apache

Version Apache 1. 3. x prefork 방식을 사용 DSO(Dynamic Shared Object) 지원 Apache 2.

Version Apache 1. 3. x prefork 방식을 사용 DSO(Dynamic Shared Object) 지원 Apache 2. x 처음부터 완전히 새롭게 제작됨 prefork & thread (worker model) 지원 이식성을 높인 공통 라이브러리 채용: apache portable runtime library

Installation (yum, RPM) Apache package (2. x 기준) apr-util httpd YUM(Yellowdog Update Manager) e.

Installation (yum, RPM) Apache package (2. x 기준) apr-util httpd YUM(Yellowdog Update Manager) e. g. ) yum –y install apr-util httpd

onfiguration directories : /etc/httpd conf : configuration files logs : log directory (symbolic link)

onfiguration directories : /etc/httpd conf : configuration files logs : log directory (symbolic link) modules : extension module plug-ins /etc/httpd/conf/httpd. conf 아파치 웹서버 설정 파일 총 3개의 섹션으로 구분됨 global environment main server configuration virtual host configuration

selinux와 httpd selinux (Security Enhanced Linux) selinux 설정이 enforce 라면 httpd의 기능중 보안에 영향

selinux와 httpd selinux (Security Enhanced Linux) selinux 설정이 enforce 라면 httpd의 기능중 보안에 영향 을 미칠 수 있는 부분은 모두 제약을 받게 됨 selinux 설정의 확인 설정파일(부팅시 읽어오는 설정): /etc/sysconfig/selinux 현재 설정을 읽는 명령어: getenforce selinux 의 설정 변경 설정파일의 SELINUX=enforcing 을 SELINUX=permissive 로. . . 당장 설정만 바꿀 때는 "setenforce Permissive"로. . .

configuration: global env. Server. Tokens <Prod|Min|OS|Full> Prod, Product. Only 웹서버의 종류만 출력 정보웹서버의 공개

configuration: global env. Server. Tokens <Prod|Min|OS|Full> Prod, Product. Only 웹서버의 종류만 출력 정보웹서버의 공개 수준 Min, Minimal 종류, 버전 출력 OS 웹서버의 종류, 버전, 운영체제 출력 Full 웹서버의 모든 정보 공개 (사용되는 모듈까지) $ telnet localhost 80 GET / HTTP/1. 0 HTTP/1. 1 403 Forbidden Date: Mon, 14 Jul 2008 05: 31: 49 GMT Server: Apache/2. 2. 8 (Fedora) OS레벨의 Accept-Ranges: bytes Content-Length: 3918 Connection: close Content-Type: text/html; charset=UTF-8. . . 생략. . . 정보 공개 수준

configuration: global env. (con’t) 서버 루트 디렉터리 Server. Root “directory path" e. g. )

configuration: global env. (con’t) 서버 루트 디렉터리 Server. Root “directory path" e. g. ) Server. Root "/etc/httpd“ 아파치 웹서버의 시작 디렉터리며 구조 PID file Pid. File pid_path 실제 경로 : Server. Root + run/httpd. pid e. g. ) Pid. File run/httpd. pid = /etc/httpd/run/httpd. pid

configuration: global env. (con’t) Keep. Alive <On|Off> 기 능 Max. Keep. Alive. Requests <#

configuration: global env. (con’t) Keep. Alive <On|Off> 기 능 Max. Keep. Alive. Requests <# of requests> Keep. Alive. Timeout <second> HTTP Keep. Alive 설정 지속성 연결(persistent connection)의 사용여부, 리퀘스트 제한, 타임아웃 필요성 잦은 소켓의 생성 파괴로 인한 오버 헤드 제거 보 Do. S attack의 빌미를 제공 할 수 있음 안 Keep. Alive On Max. Keep. Alive. Requests 50 Keep. Alive. Timeout 1

configuration: global env. (con’t) HTTP Keep. Alive 설정 (con’t) Keep. Alive Off이면 Max. Keep.

configuration: global env. (con’t) HTTP Keep. Alive 설정 (con’t) Keep. Alive Off이면 Max. Keep. Alive. Requests, Keep. Alive. Timeout은 무효화됨 Max. Keep. Alive. Requests : 지속적인 접속 내에서 최대 처리 가능한 누적 요청 수 Keep. Alive. Timeout는 마지막 요청 이후 접속을 유지할 타 임아웃 Max. Keep. Alive. Requests 50 Keep. Alive On 1설정이 아래와 같다면 140개의 요청에는? Keep. Alive. Timeout

exercise !! prefork로 작동시킨 뒤 ps, pstree에서 개수 확인 start server 개수 확인 후

exercise !! prefork로 작동시킨 뒤 ps, pstree에서 개수 확인 start server 개수 확인 후 ab로 접속시켜서 프로세스가 증가하는 것을 확인 ab는 아파치 접속 테스트 유틸리티 ab -n 4096 -c 200 http: //localhost/ worker thread로 작동시킨 뒤 위와 같이 확인 start server 개수를 확인 후 ab 테스트로 prefork. c> 프로세스 증가 <If. Module 를 확인 Start. Servers 3 ab -n 4096 -c 200 http: //localhost/ Max. Clients 600 Min. Spare. Threads 25 옆의 서버 제한값으로 실행했을 때의 메시지를 확인!! Max. Spare. Threads 75 Threads. Per. Child 25 Max. Requests. Per. Child 0 </If. Module>