CentOS7에 Apache 설치
공식 참조
공식 웹 사이트 제품 문서 HTTPS Gzip설치 수행
yum -y install libmcrypt libmcrypt-devel mcrypt mhash
yum -y install httpd
구성 파일 수정
설치가 완료된 후 구성 파일을 수정해야합니다. 특정 수정 내용에는 일반적으로 바인딩 된 IP 및 포트, gzip 압축 전송, 동시 연결 수 및 SSL이 포함됩니다. 아래에서 하나씩 설명하겠습니다.
바인딩 된 IP 및 포트 수정
Apache가 수신하는 기본 IP 및 포트는 0.0.0.0:80입니다. 모니터링되는 IP 및 포트를 수정해야하는 경우 직접 수정할 수 있습니다. 여러 포트를 바인딩해야하는 경우 추가 할 수도 있습니다. 다음 예에서는 포트 80과 443을 바인딩합니다. 포트 443은 HTTPS의 기본 포트 번호입니다.
Listen 80
Listen 443 https
gzip 전송 열기
컴퓨터의 CPU 성능이 상대적으로 높기 때문에 일반적으로 병목 현상이 네트워크 대역폭에 나타나므로 gzip 압축 전송을 켜도록 선택할 수 있습니다. 압축은 9 단계가 있으며 서버의 성능에 따라 선택하여 가장 적합한 수준을 찾을 수 있습니다. 아래 예에서는 레벨 1로 설정했습니다. 압축 파일 유형은 html, xml, php, css, js이며 필요에 따라 압축 파일 유형을 추가 할 수도 있습니다.
<IfModule mod_deflate.c>
DeflateCompressionLevel 1
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
AddOutputFilter DEFLATE js css
</IfModule>
KeepAlive 설정
KeepAlive의 기능은 일정 기간 동안 클라이언트와 서버가 연결된 상태를 유지하는 것입니다. 웹 페이지를 열 때 일반적으로 기본 콘텐츠, js, css 및 사진을로드해야합니다. 각 리소스가 별도의 HTTP 요청을 시작해야하므로 KeepAlive를 활성화하여 각 요청이 TCP / IP 링크를 설정하는 데 필요한 시간을 줄입니다. 하지만 킵 얼라이브도 단점이 있는데, 서버의 IO 리소스를 차지하게되므로 실제 상황에 따라 킵 얼라이브 활성화 여부를 선택해야합니다. KeepAlive가 활성화 된 경우 서버 IO가 오랫동안 점유되는 것을 방지하기 위해 적절한 제한 시간도 설정해야합니다. 다음 예제에는 KeepAlive의 몇 가지 기본 설정이 포함되어 있습니다.
KeepAlive On
MaxKeepAliveRequests 400
KeepAliveTimeout 5
동시 수 구성
동시 수를 합리적으로 구성하면 서버의 처리량이 크게 향상 될 수 있습니다. 일반적으로 Apache는 mpm_prefork 모드에서 작동합니다. 몇 가지 주요 매개 변수를 합리적으로 구성해야합니다. 주의해야 할 점은 최대 연결 수가 너무 적어서는 안되며, 너무 작 으면 동시성이 높을 때 많은 수의 사용자 요청이 거부된다는 것입니다. 우리가 설정 한 합리적인 값은 서버의 CPU 및 메모리를 참조해야합니다. 리소스가 충분하면 최대한 크게 설정해야하지만 너무 크게 설정하면 서버 리소스가 고갈되고 Apache도 충돌합니다.
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 25
MaxSpareServers 50
ServerLimit 1500
MaxClients 1000
MaxRequestsPerChild 3000
</IfModule>
SSL 구성
대부분의 웹 사이트는 이제 HTTPS 보안 연결을 지원하기 위해 SSL을 활성화했습니다. HTTPS의 장점은 전송 중 콘텐츠가 암호화되어 있기 때문에 타인의 도청으로 인한 정보 유출에 대해 걱정할 필요가 없습니다. SSL을 활성화하기 전에 먼저 인증서를 신청해야하며 인증서를받은 후 다음 구성을 참조하여 SSL 설정을 완료합니다.
<VirtualHost *:443>
ServerAdmin www.test.com
ServerName www.testl.com
DocumentRoot /var/www/test
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile /etc/httpd/conf/cert/public.crt
SSLCertificateKeyFile /etc/httpd/conf/cert/1533528967430.key
SSLCertificateChainFile /etc/httpd/conf/cert/chain.crt
AllowEncodedSlashes on
<Directory "/var/www/test.com">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>