> 운영 및 유지보수 > 안전 > 아파치를 구성하는 방법

아파치를 구성하는 방법

WBOY
풀어 주다: 2023-05-12 11:13:19
앞으로
935명이 탐색했습니다.

Apache의 구성은 httpd.conf 파일로 구성되므로 httpd.conf 파일에서 다음 구성 지침을 수정합니다.
기본 사이트 구성(기본 구성)

(1) 기본 구성:
ServerRoot "/mnt/software/apache2" #Apache 소프트웨어가 설치된 위치입니다. 지정된 다른 디렉터리에 대해 절대 경로가 지정되지 않은 경우 디렉터리는 이 디렉터리를 기준으로 합니다.

PidFilelogs/httpd.pid #첫 번째 httpd 프로세스(다른 모든 프로세스의 상위 프로세스)의 프로세스 번호 파일 위치입니다.

Listen 80 #서버가 Listen하는 포트번호.

ServerName www.clusting.com:80 #기본 사이트 이름(웹 사이트의 호스트 이름).

ServerAdmin admin@clusting.com #관리자의 이메일 주소입니다.

DocumentRoot "/mnt/web/clusting" #메인사이트의 웹페이지 저장 위치입니다.


다음은 기본 사이트 디렉토리에 대한 액세스 제어입니다.


Options FollowSymLinks
AllowOverride None
Order 허용, 거부
Allow from all
< /Directory>

위 디렉터리 속성 구성에는 주로 다음과 같은 옵션이 있습니다.

Options: 특정 디렉터리에서 어떤 기능을 사용할지 구성합니다. 공통 값과 기본 의미는 다음과 같습니다.

ExecCGI: 실행 허용 이 디렉토리에 CGI 스크립트가 있습니다.

FollowSymLinks: 파일 시스템이 이 디렉터리의 심볼릭 링크를 사용할 수 있도록 허용합니다.

색인: 사용자가 디렉터리에 액세스할 때 DirectoryIndex에서 지정한 홈페이지 파일(예: index.html)을 찾을 수 없는 경우 디렉터리의 파일 목록이 사용자에게 반환됩니다.

SymLinksIfOwnerMatch: 심볼릭 링크를 사용할 때 심볼릭 링크의 파일 소유자가 실제 파일의 소유자와 동일한 경우에만 접근이 가능합니다.

다른 사용 가능한 값과 의미는 다음을 참조하세요. http://www.clusting.com/Apache/ApacheManual/mod/core.html#options


AllowOverride: .htaccess 파일에 존재하는 지시문 유형 허용( .htaccess 파일 이름은 변경될 수 있으며 파일 이름은 AccessFileName 지시어에 의해 결정됩니다.
None: AllowOverride가 None으로 설정된 경우. 이 디렉터리에서 .htaccess 파일을 검색하지 마세요(서버 오버헤드를 줄일 수 있음).

All: 모든 지시문을 .htaccess 파일에서 사용할 수 있습니다.

다른 사용 가능한 값과 의미(예: 옵션 FileInfo AuthConfig 제한 등)는 다음을 참조하세요. http://www.clusting.com/Apache/ApacheManual/mod/core.html#AllowOverride

순서: 액세스 중 제어 허용 및 거부라는 두 가지 액세스 규칙 중 어느 것이 우선합니다.

허용: 액세스가 허용된 호스트 목록(사용 가능한 도메인 이름 또는 서브넷, 예: 192.168.0.0/16에서 허용).

거부: 액세스가 거부된 호스트 목록입니다.

자세한 사용법은 다음을 참조하세요: http://www.clusting.com/Apache/ApacheManual/mod/mod_access.html#order

DirectoryIndex index.html index.htm index.php #홈페이지 파일 설정 (이 예에서는 홈페이지 파일을 index.html, index.htm 및 index.php로 설정합니다.)


(2) 서버 최적화(MPM: 다중 처리 모듈)
apache2의 주요 장점은 다음을 더 잘 지원한다는 것입니다. 다중 프로세서. apache2의 작업 모드를 결정하기 위해 컴파일할 때 --with-mpm 옵션을 사용하십시오. 현재 apache2가 사용하는 작동 메커니즘을 알고 있다면 httpd -l 명령을 사용하여 Apache의 모든 모듈을 나열하고 어떻게 작동하는지 알 수 있습니다.

prefork: httpd -l이 prefork.c를 나열하는 경우 다음을 수행해야 합니다. 다음 단락을 수정합니다. 구성:



StartServers 5 #아파치를 시작할 때 시작된 httpd 프로세스 수입니다.

MinSpareServers 5 #서버에서 유지 관리하는 유휴 프로세스의 최소 수입니다.

MaxSpareServers 10 #서버에서 유지 관리하는 최대 유휴 프로세스 수입니다.

MaxClients 150 #최대 동시 연결 수.

MaxRequestsPerChild 1000 #각 하위 프로세스가 종료되기 전에 서비스를 요청한 횟수입니다. 0은 제한이 없음을 의미하며, 1000으로 설정하는 것이 좋습니다.




이 작업 모드에서는 서버가 시작된 후 5개의 httpd 프로세스가 시작됩니다(추가로 ps -ax|grep httpd 명령을 통해 볼 수 있는 총 6개의 상위 프로세스). 사용자가 연결하면 Apache는 유휴 프로세스를 사용하여 연결을 제공하고 상위 프로세스는 하위 프로세스를 분기합니다. 메모리의 유휴 프로세스 수가 MaxSpareServers에 도달할 때까지. 이 모드는 일부 이전 버전의 프로그램과의 호환성을 위한 것입니다. 내 기본 컴파일 시간 옵션입니다.

worker: httpd -l이 작업자.c를 나열하는 경우 다음 섹션을 구성해야 합니다.



StartServers 2 #Apache를 시작할 때 시작된 httpd 프로세스 수입니다.

MaxClients 150 #최대 동시 연결 수.

MinSpareThreads 25 #서버가 유지 관리하는 최소 유휴 스레드 수입니다.

MaxSpareThreads 75 #서버에서 유지 관리하는 최대 유휴 스레드 수입니다.

ThreadsPerChild 25 #각 하위 프로세스에서 생성된 스레드 수입니다.

MaxRequestsPerChild 0 # 각 하위 프로세스가 종료되기 전에 서비스를 요청한 횟수입니다. 0은 제한이 없음을 의미하며, 1000으로 설정하는 것이 좋습니다.




이 모드는 스레드를 사용하여 클라이언트 연결을 모니터링합니다. 새 클라이언트가 연결되면 유휴 스레드 중 하나가 연결을 수락합니다. 서버는 시작 시 두 개의 프로세스를 시작하고 각 프로세스에서 생성된 스레드 수는 고정되어(ThreadsPerChild에 의해 결정됨) 시작 시 스레드가 50개입니다. 50개의 스레드가 충분하지 않으면 서버는 자동으로 프로세스를 분기하고 25개의 스레드를 추가로 생성합니다.


perchild: httpd -l이 perchild.c를 나열하는 경우 다음 섹션을 구성해야 합니다.



NumServers 5 #서버가 시작될 때 시작된 하위 프로세스 수

StartThreads 5 #각 하위 프로세스가 시작될 때 시작되는 스레드 수

MinSpareThreads 5 #메모리의 최소 유휴 스레드 수

MaxSpareThreads 10 #유휴 스레드의 최대 수

MaxThreadsPerChild 2000 #각 스레드가 요청할 수 있는 최대 횟수 나가기 전에. 0은 제한되지 않습니다.

MaxRequestsPerChild 10000 #다시 포크되기 전에 각 하위 프로세스가 서비스를 제공하는 횟수입니다. 0은 제한이 없음을 의미합니다.



이 모드에서는 하위 프로세스 수가 고정되고 스레드 수가 제한되지 않습니다. 클라이언트가 서버에 연결되면 유휴 스레드가 서비스를 제공합니다. 유휴 스레드 수가 충분하지 않으면 하위 프로세스가 자동으로 스레드를 생성하여 새 연결을 제공합니다. 이 모드는 다중 사이트 서버에 사용됩니다.
(3) HTTP 반환 정보 구성:

ServerTokens Prod #이 매개변수는 http 헤더에서 반환되는 Apache 버전 정보를 설정합니다. 사용 가능한 값과 의미는 다음과 같습니다.

Prod: 소프트웨어 이름만. 예: apache
Major: 주 버전 번호 포함(예: apache/2)
Minor: 부 버전 번호 포함(예: apache/2.0)
Min: Apache의 전체 버전 번호만 포함(예: apache/2.0.54)
OS: 운영 체제 유형 포함(예: apache /2.0.54(Unix))
전체: apache에서 지원하는 모듈 및 모듈 버전 번호 포함(예: Apache/2.0.54(Unix) mod_ssl/2.0.54 OpenSSL/ 0.9.7g
ServerSignature Off #페이지에 오류가 발생할 때 서버 버전 정보가 나타납니다. 권장 설정은 Off


(4) 영구 연결 설정

KeepAlive On #영구 연결 기능을 켭니다. 즉, 클라이언트가 서버에 연결되면 데이터를 다운로드한 후에도 연결이 유지됩니다.

MaxKeepAliveRequests 100 #연결 서비스에 대한 최대 요청 수입니다.

KeepAliveTimeout 30 #연결을 계속할 기간입니다. 연결이 다시 데이터를 요청하지 않으면 연결이 끊어집니다. 기본값은 15초입니다.

별칭 설정
DocumentRoot에서 지정한 디렉터리에 없는 페이지의 경우 기호 연결이나 별칭을 사용할 수 있습니다. 별칭 설정은 다음과 같습니다.

Alias ​​​​/download/ "/var/www/download/" #접속시 http://www.custing.com/download/

mnt/software/apache2/cgi-bin/" # 접속하는 경우: http://www.clusting.com/cgi-bin/. 하지만 이 디렉터리의 CGI 스크립트 파일에는 실행 권한이 있어야 합니다!

<디렉토리 "/usr/local/apache2/cgi-bin"> #디렉토리 속성 설정
AllowOverride None
Options None
Order 허용, 거부
Allow from all
(public_html)

UserDir public_html (사용자의 홈페이지는 사용자의 홈 디렉토리 아래 public_html 디렉토리에 저장됩니다. URL http://www.clusting.com/~bearzhang/file.html은 /home/bearzhang/public_html/ 파일을 읽습니다. .html 파일)

chmod 755 /home/bearzhang #다른 사용자가 파일을 읽을 수 있도록 합니다.

UserDir /var/html (URL http://www.clusting.com/~bearzhang/file.html은 /var/html/bearzhang/file.html로 읽혀짐)

UserDir /var/www/*/ docs (URL http://www.clusting.com/~bearzhang/file.html은 /var/www/bearzhang/docs/file.html로 읽혀집니다.)

로그 설정

(1) 오류 로그 설정
ErrorLog 로그/error_log #로그 저장 위치
LogLevel warning #로그 수준

표시되는 형식은 다음과 같습니다.
[Mon Oct 10 15:54:29 2005] [error] [client 192.168.10.22] /다운로드/에 대한 액세스 실패, 이유: 사용자 관리자가 액세스를 허용하지 않음

(2) 액세스 로그 설정

로그의 기본 형식은 다음과 같습니다:
LogFormat "%h %l %u %t "%r" %> ;s %b "%{Referer}i" "%{User-Agent}i"" 결합
LogFormat "%h %l %u %t "%r" %>s %b" common #common은 로그입니다. 형식 이름
LogFormat " %{Referer}i -> %U" 참조자
LogFormat "%{User-agent}i" 에이전트
CustomLog 로그/access_log 공통


형식의 매개변수는 다음과 같습니다.

% h - 클라이언트의 IP 주소 또는 호스트 이름

%l - 클라이언트 identd에 의해 결정된 RFC 1413 ID입니다. 출력에서 ​​"-" 기호는 여기에 있는 정보가 유효하지 않음을 나타냅니다.

%u --HTTP 인증 시스템에서 얻은 웹페이지에 액세스한 클라이언트의 이름입니다. 인증이 있는 경우에만 유효합니다. 출력에 "-" 기호는 여기에 있는 정보가 유효하지 않음을 나타냅니다.

%t – 서버가 요청 처리를 완료하는 시간입니다.

"%r" --따옴표는 고객이 보낸 요청 내용에 유용한 정보가 많이 포함되어 있습니다.

%>s --서버가 클라이언트에 반환하는 상태 코드입니다.

%b --마지막 항목은 응답 헤더를 제외하고 클라이언트에 반환된 바이트 수입니다.

"%{Referer}i" --이 항목은 요청이 제출된 웹 페이지를 지정합니다.

"%{User-Agent}i" --고객의 브라우저에서 제공하는 브라우저 식별정보입니다.

다음은 액세스 로그의 예입니다.
192.168.10.22 - bearzhang [10/Oct/2005:16:53:06 +0800] "GET /download/ HTTP/1.1" 200 1228
192.168.10.22 - - [10 /Oct/2005:16:53:06 +0800] "GET /icons/blank.gif HTTP/1.1" 304 -
192.168.10.22 - - [10/Oct/2005:16:53:06 +0800] "GET /icons/back.gif HTTP/1.1" 304 -

각 매개 변수에 대한 자세한 설명은 http://www.clusting.com/Apache/ApacheManual/logs.html을 참조하세요.


사용자 인증 구성
(1)httpd.conf에서:
AccessFileName .htaccess
...............
Alias ​​​​/download/ "/var/www/download/"

옵션 인덱스
AllowOverride AuthConfig

(2) 비밀번호 파일 생성:
/usr/local/apache2/bin/htpasswd -c /var/httpuser/passwords bearzhang

(3) 비밀번호를 요청하고 서버에 액세스가 허용되는 사용자를 알려주도록 서버를 구성하세요.
vi /var/www/download/.htaccess:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /var/httpuser/passwords
사용자 Bearzhang 필요
#유효한 사용자 필요 #모든 유효한 사용자

가상 호스트 구성
(1) IP 주소 기반 가상 호스트 구성
Listen 80

DocumentRoot /www/example1
ServerName www.example1. com
< /VirtualHost>
듣기 172.20.30.40:80 ilisten 172.20.30.40:8080
듣기 172.20.30.50:80
듣기 172.20.30.50:8080

& lt ; 가상호스트 172.20.30.40:80>RO OT/WWW/예1 -80
서버 이름 www.example1.com



DocumentRoot /www/example1-8080
서버 이름 www.example1.com

< VirtualHost 172.20.30.50:80>
DocumentRoot /www/example2-80
ServerName www.example1.org
Apache가 포트 80에서 수신하는지 확인
Listen 80

# 모든 ​​IP 주소에서 가상 호스트 요청 수신
NameVirtualHost *:80

example1
ServerName www.example1.com
ServerAlias ​​​​example1.com. 여기에 다른 지시어
< ;/VirtualHost>

(4) 여러 IP 주소가 있는 서버에 도메인 이름 기반 가상 호스트 구성:
Listen 80

# 이것은 172.20.30.40에서 실행되는 "메인" 서버입니다.
ServerName server.domain.com
DocumentRoot /www/mainserver

# 이것은 다른 주소입니다.
NameVirtualHost 172.20.30.50


DocumentRoot /www/example1
ServerName www.example 1.com
# 여기에 다른 지시문이 있습니다 ...


(5) in other 포트에서 다른 사이트를 실행합니다(다중에서 도메인 이름 기반 가상 호스트 구성) -포트 서버):
Listen 80
Listen 8080

NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080


서버 이름 www.example1.com
DocumentRoot /www/domain -80



ServerName www.example1.com
cumentRoot /www/domain-8080
ualHost 172.20.30.40: 80>
서버 이름 www.example2.org
DocumentRoot /www/otherdomain-80


< VirtualHost 172.20.30.40:8080> 080


(6) 도메인 이름 기반 및 IP 기반 하이브리드 가상 호스트 구성:
Listen 80

NameVirtualHost 172.20.30.40

< VirtualHost 172.20.30.40> 1
서버 이름 www.example1.com



DocumentRoot /www/ example2
ServerName www.example2.org
< ;/VirtualHost>

구성하기 전에 먼저 이해하세요.

인증서의 개념: 먼저 루트 인증서가 있어야 하며, 루트 인증서를 사용하여 서버 인증서와 클라이언트 인증서를 발급합니다. 일반적으로 서버 인증서와 클라이언트 인증서는 수평적인 관계에 있습니다. SSL은 인증을 위해 서버 인증서를 설치해야 합니다. 따라서 이 환경에는 루트 인증서, 서버 인증서, 클라이언트 인증서의 세 가지 이상의 인증서가 있어야 합니다. 인증서를 생성하기 전에는 일반적으로 개인키가 있는데, 개인키를 이용하여 인증서 요청을 생성한 후, 인증서 서버의 루트 인증서를 이용하여 인증서를 발급합니다.

SSL에서 사용하는 인증서는 직접 생성할 수도 있고 상용 CA(예: Verisign 또는 Thawte)에서 서명할 수도 있습니다.

인증서 발급 문제: 상업용 인증서를 사용하는 경우 구체적인 서명 방법은 해당 판매자의 지침을 확인하세요. 친한 친구가 서명한 인증서인 경우 CA.sh 스크립트 도구를 사용할 수 있습니다. openssl과 함께 제공됩니다.

별도의 클라이언트에 대한 인증서를 발급하지 않는 경우에는 클라이언트 인증서를 생성할 필요가 없습니다. 클라이언트와 서버는 동일한 인증서를 사용합니다.
(1) conf/ssl.conf 구성 파일의 주요 매개변수는 다음과 같이 구성됩니다.

Listen 443
SSLPassPhraseDialog buildin
#SSLPassPhraseDialog exec:/path/to/program 
SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache 
SSLSessionCacheTimeout 300 
SSLMutex file:/usr/local/apache2/logs/ssl_mutex 

 

# 가상 호스트에 대한 일반 설정
DocumentRoot "/usr/local/apache2/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog /usr/local/apache2/logs/error_log
TransferLog /usr/local/apache2/logs/access_log 

SSLEngine의 
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 

SSLCertificateFile / usr/local/apache2/conf/ssl.crt/server.crt 
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key 
CustomLog /usr/local/apache2/logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" 

 

(2) 创建和使用自签署的证书:
a.Apache 서버
/usr/local/openssl/bin/openssl genrsa -des3-out /usr/local/apache2/conf/에 대한 RSA 개인 키를 생성합니다. ssl.key/server.key 1024 

b. 인증서 서명 요청(CSR) 생성
/usr/local/openssl/bin/openssl req -new -key /usr/local/apache2/conf/ssl.key/server.key -out /usr/local/apache2/conf /ssl.key/server.csr 

c. CA의 RSA 키를 사용하여 자체 서명된 CA 인증서(X509 구조)를 만듭니다. server.key -in /usr/local/apache2/conf/ssl.key/server.csr -out /usr/local/apache2/conf/ssl.crt/server.crt 

/usr/local/openssl/bin/ openssl genrsa 1024 -out server.key 
/usr/local/openssl/bin/openssl req -new -key server.key -out server.csr 
/usr/local/openssl/bin/openssl req -x509 -days 365 - 키 server.key -in server.csr -out server.crt

(3) 创建自己的CA(认证证书),并使用该CA来签署服务器的证书。
mkdir /CA
cd /CA 
cp openssl- 0.9.7g/apps/CA.sh /CA 
./CA.sh -newca 
openssl genrsa-des3-outserver.key1024
opensslreq-new-keyserver.key-outserver.csr
cpserver.csr newreq.pem 
./CA.sh -sign 

cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.crt

cp server.key /usr/local/apache2/conf/ssl.key/

위 내용은 아파치를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿