HTTP 서비스 구축 예시에 대한 자세한 설명

零下一度
풀어 주다: 2017-06-27 10:06:06
원래의
2258명이 탐색했습니다.
1. 소개
1. 알아보기
암호화된 웹페이지(https): tcp:443                                   到 Generation by
1. 최신 버전은 이 웹사이트에서 확인할 수 있습니다.
하이퍼텍스트 전송 프로토콜(HTTP, HyperText Transfer Protocol)은 인터넷에서 가장 널리 사용되는 네트워크 프로토콜입니다. 모든 WWW 파일은 이 표준을 준수해야 합니다. HTTP 설계의 원래 목적은 HTML 페이지를 게시하고 수신하는 방법을 제공하는 것이었습니다
2. Apache
Apache HTTP 서버(Apache라고 함)는 Apache Software Foundation의 오픈 소스 웹 서버입니다. 대부분의 컴퓨터 운영 체제에서 실행되며 다중 플랫폼 및 보안으로 인해 널리 사용됩니다. 기능은 다음과 같습니다.
1. 최신 HTTP/1.1 통신 프로토콜 지원
2. 간단하고 강력한 파일 기반 구성 프로세스가 있습니다
3. 범용 게이트웨이 인터페이스 지원
4 IP 기반 및 도메인 이름 기반 가상 호스트 지원
5. 다양한 HTTP 인증 방식 지원
6. 통합 Perl 처리 모듈
8. 서버 상태 실시간 모니터링 및 맞춤형 서버 로그 지원
9. )
10. SSL(Secure Socket Layer)을 지원합니다
11. FastCGI를 지원합니다
13. 타사 모듈을 통해 JavaServlet을 지원합니다. 설치:
www.apache.org --apache 공식 웹사이트
# yum install httpd* --httpd 서비스 설치# httpd -t --구성 파일의 정확성 확인
# rm -rf /etc/httpd/conf .d/welcome.conf --httpd가 설치되어 있으므로 환영 인터페이스를 삭제합니다. 따라서
/ServerIp/manual
4에 액세스할 수 있습니다. prefork, Worker
prefork 모드:
prefork는 Unix 플랫폼의 기본(기본) MPM이며, 각각 스레드가 하나만 있는 여러 하위 프로세스를 사용합니다. 각 프로세스는 특정 시간에 하나의 연결만 유지할 수 있어 매우 효율적이지만 많은 메모리를 차지합니다. 이 다중 처리 모듈(MPM)은 Apache 1.3과 유사하게 작동하는 스레드되지 않은 사전 포크된 웹 서버를 구현합니다. 스레드로부터 안전한 라이브러리가 없고 스레드 호환성 문제를 피해야 하는 시스템에 적합합니다. 각 요청이 서로 독립적이어야 할 때 가장 적합한 MPM이므로 하나의 요청에 문제가 발생하더라도 다른 요청에 영향을 미치지 않습니다.
작업자 모드:
작업자는
여러 하위 프로세스를 사용하고 각 하위 프로세스에는 여러 스레드가 있습니다
, 각 스레드는 특정 시간에 하나의 연결만 유지할 수 있습니다. 메모리 공간은 상대적으로 작으며 트래픽이 많은 http에 적합합니다. 서버. 단점은 스레드가 충돌하면 전체 프로세스가 해당 스레드와 함께 "종료"되므로 프로그램이 실행 중일 때 시스템에서 "모든 스레드가 안전함"으로 인식되어야 한다는 것입니다. 이 MPM(멀티프로세싱 모듈)을 사용하면 웹 서버가 혼합 멀티스레딩과 멀티프로세싱을 지원할 수 있습니다. 스레드는 요청을 처리하는 데 사용되므로 프로세스 기반 MPM보다 적은 시스템 리소스 오버헤드로 대규모 요청을 처리할 수 있습니다. 그러나 또한 프로세스 기반 MPM의 안정성을 얻기 위해 각각 여러 스레드가 있는 여러 프로세스를 사용합니다.
# httpd -l --실행 모드 보기, 기본값은 prefork.c
# mv -v /usr/sbin/httpd{,.prefork} --백업 프리포크 모드
# mv -v /usr/sbin / httpd{.worker,} --작업자 모드 사용
2. 구성 파일에 대한 자세한 설명
1. 전역 환경 매개변수
ServerTokens OS
--서버가 호스트에 응답하면 Apache를 표시합니다. 헤더 정보 버전 및 운영 체제 이름
ServerRoot "/etc/httpd"
--서버의 기본 디렉터리는 일반적으로 conf/ 및 log/ 하위 디렉터리를 포함합니다. 이 디렉토리에.
PidFile run/httpd.pid
--첫 번째 httpd 프로세스(다른 모든 프로세스의 상위 프로세스)의 프로세스 번호 파일 위치입니다.
Timeout 60
--60초 후에도 데이터가 수신되거나 전송되지 않으면 연결이 끊어집니다.
KeepAlive Off
--KeepAlive 기능은 기본적으로 사용되지 않습니다. 즉, 클라이언트는 연결 요청 시 한 번에 하나의 파일에만 응답합니다.
MaxKeepAliveRequests 100 --연결 유지 기능을 사용할 때 클라이언트가 응답할 수 있는 파일의 최대 상한을 설정합니다. 한 번에 한도를 초과하면 연결이 끊어집니다
KeepAliveTimeout 15 --연결 유지 기능을 사용할 때 두 개의 인접한 연결 사이의 시간 간격이 15초를 초과하면 연결이 끊어집니다
.............
Listen 80 --서버가 수신하는 포트 번호 더 많은 수신 포트를 열 수 있습니다.
conf.d/*.conf 포함 --/etc/httpd/에 conf로 끝나는 모든 구성 포함 conf.d 디렉토리 파일이 포함됩니다
User apache --서비스를 제공하는 하위 프로세스의 사용자
Group apache --서비스를 제공하는 하위 프로세스의 사용자 그룹
ServerAdmin root@george.com --관리자의 이메일 주소
ServerName mail.george.com:80 --기본 사이트 이름(웹 사이트의 호스트 이름)
UseCanonicalName Off
DocumentRoot "/var/www /html" --웹 문서 루트 디렉터리를 설정합니다. 그러나 기호 링크와 별칭을 사용하여 다른 위치를 가리킬 수 있습니다. 절대 경로가 아닌 경우 ServerRoot에 대한 상대 경로로 간주됩니다.
2 . 경로 제어 매개변수
DirectoryIndex index.html index.html.var -- 웹사이트의 기본 웹 페이지 파일 이름, 왼쪽 우선순위
AccessFileName .htaccess -- 보호된 디렉터리 구성 파일의 이름 지정
--------- ---------------------------- ---------- -------------- -------
--캡슐화용 디렉토리와 그 하위 디렉토리에만 적용되는 명령 집합입니다. 파일 시스템의 디렉터리
옵션 색인 FollowSymLinks
AllowOverride 없음
주문 허용, 거부
모두에서 허용
192.168.133.22에서 거부
디렉토리 - path --는 디렉터리의 전체 경로이거나 Unix 셸 일치 구문이 포함된 와일드카드 문자열일 수 있습니다. 와일드카드 문자열에서 "?"는 모든 단일 문자와 일치하고 "*"는 모든 문자 시퀀스와 일치합니다. "[]"를 사용하여 문자 범위를 결정할 수도 있습니다. "~" 문자 뒤에도 정규식을 사용할 수 있습니다
옵션 --이 명령의 값은 "None", "All" 또는 다음 옵션의 조합일 수 있습니다. Indexes(앞에 ' -' 그런 다음 웹 사이트 목록 기능을 끄십시오. 그렇지 않으면 기능이 꺼집니다. SymLinksifOwnerMatch;
AllowOverride --.htaccess 파일에 있는 제어 지시문입니다. All, None(.htaccess에서 구성을 볼 수 없음) 또는 다음 지시문의 조합일 수 있습니다: Options; AuthConfig Limit
Order, Allow, Deny --서비스를 받을 수 있는 사람 제어 . oreder의 매개변수는 최종적으로 오른쪽 매개변수를 기준으로 하며, 순서가 바뀔 수 있습니다
-------------------------- ------- ----------------- ------- ----------
<디렉터리 "/www/images">
<파일 ~ ".jpg$"> - -지정된 파일 의 경우 는 특정 디렉터리에 있거나 전역적으로
주문 거부, 허용
모든 항목에서 허용
----------------------------------------------- --- ---------------------------------- --- ------
-- 서버 상태(또는 정보)를 보려면 "http://servername/server-status" URL을 사용하도록 허용합니다. 위치는 주로 제어 URL입니다
SetHandler server-status(server-info)
주문 거부, 허용
모두 허용
------ ---- --------------------------------- ---- --------------------------------- ----
Alias ​​​​/ url-path /filesystem-path --URL을 파일 시스템 경로에 매핑합니다(시스템에서 ln -s 소프트 링크를 사용하여 이를 달성할 수도 있음)
<디렉토리 "/filesystem-path">
3. 디렉토리 액세스를 위한 사용자 비밀번호 제어(비시스템 사용자)
<디렉토리 "/var/www/html" > --이론은 위치, 파일에서도 사용할 수 있습니다
옵션 색인 FollowSymLinks
AllowOverride None
주문 허용, 거부
모두 허용
authname "본인 인증"  --브라우저에서 URL을 열라는 메시지를 표시합니다.
authtype basic
authuserfile /etc/httpd/userpasswd  --사용자 및 비밀번호 파일 위치
유효 사용자 필요
# htpasswd -c /etc/httpd/userpasswd Frank -- 액세스를 허용하는 사용자 만들기
# htpasswd /etc/httpd/userpasswd george - - 다른 하나를 생성하고, 비밀번호 파일을 생성하기 위한 '-c' 매개변수를 기억하세요. 이는 첫 번째 사용자를 생성할 때만 사용할 수 있습니다.
참고: 디렉토리가 비밀번호 제어 액세스를 사용하는 경우 웹 브라우저를 통해 상위 디렉토리가 나열될 때 디렉토리가 표시되지 않습니다. 즉, 숨겨집니다. 하지만 URL을 직접 입력하면 접속할 수 있습니다(계정과 비밀번호가 있어도).
4. 도메인 이름 기반 가상 호스트
NameVirtualHost *:80 -- 포트 80을 가상 호스트 포트로 설정하려면 이 구성을 추가하세요.
ServerName www.george.com
DocumentRoot /var/www/html/
.......... ... .
--두 번째 가상 호스트
ServerName mail.george.com
DocumentRoot /var/ www/cgi- bin/openwebmail/
ScriptAlias ​​​​/mail /var/www/cgi-bin/openwebmail/openwebmail.pl
<위치 />
.......... .. .......
  이 실험의 SeverName 매개변수를 IP 주소에 연결하면 IP 기반의 가상 호스트도 만들 수 있습니다
5. 로그 매개변수
ErrorLoglogs/error_log --오류 저장 위치 log
LogLevel 경고 --오류 로그 수준을 정의합니다. 다음을 포함합니다: 디버그, 정보, 알림, 경고, 오류, 비판, 경고, emerg.
LogFormat "%h %l %u %t "%r" %>s %b " %{Referer}i" "%{User-Agent}i"" 결합
.....
LogFormat "%{User-agent}i" Agent --the four 액세스 로그
의 기본 형식입니다.CustomLog 로그/access_log 결합 --결합된 액세스 로그 형식 사용
%h – 클라이언트의 IP 주소 또는 호스트 이름
%l –The 이것은 RFC에서 판단한 것입니다. 클라이언트 식별 1413 ID에 따라 출력의 "-" 기호는 여기에 있는 정보가 유효하지 않음을 나타냅니다.
%u – HTTP 인증 시스템을 통해 얻은 웹페이지에 액세스한 클라이언트의 이름입니다. 인증이 있는 경우에만 유효합니다. 출력에 "-" 기호는 여기에 있는 정보가 유효하지 않음을 나타냅니다.
%t – 서버가 요청 처리를 완료한 시간입니다.
"%r" – 따옴표는 고객이 보낸 요청 내용으로 유용한 정보가 많이 포함되어 있습니다.
%>s - 서버가 클라이언트에 반환하는 상태 코드입니다.
%b – 마지막 항목은 응답 헤더를 제외하고 클라이언트에 반환된 바이트 수입니다.
"%{Referer}i" – 이 항목은 요청이 제출된 웹 페이지를 지정합니다.
"%{User-Agent}i" - 고객의 브라우저에서 제공하는 브라우저 식별정보입니다.
6. SSL 암호화 구성
# yum install -y mod_ssl --암호화 모듈 설치
# vim /etc/httpd/conf.d/ssl.conf
ErrorLog LOGS/SSL_ERROR_LOG
TRANSFERLLOG LOGS/SSL_ACCESS_LOG
LOGLEVEL WarNGINGINGINGINGINGINGINGINGINGICOCOCOL 모두 -sslv2
SSLCIPHERTE 기본값:!
SSLCertificateFile /etc/pki/tls/certs/localhost.crt --구성 공개 키 파일
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key --구성 비밀 키 파일
<파일 ~ ".(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
ServerName www.george.com
DocumentRoot /var/www/cgi-bin/openwebmail /
ScriptAlias ​​​​/mail /var/www/cgi-bin/openwebmail/openwebmail.pl
<위치 />
SSLOptions +StdEnvVars
옵션 인덱스
주문 거부, 허용
모두 허용
SetEnvIf User-Agent ".*MSIE.*"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
CustomLog 로그/ssl_request_log
"%t % h % {SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
6.1. 인증서를 직접 구성하세요
# mkdir /etc/pki/test/
# cd /etc/ pki/test
# openssl genrsa -out /etc/pki/test/test.key 1024 --Secret key
# openssl req -new -key test.key -out test.csr
국가 이름( 2 문자 코드 ) [XX]:cn
시/도 이름(전체 이름) []:guangDong
지역 이름(예: 도시) [기본 도시]:Shenzhen
조직 이름(예: , 회사) [기본 회사 Ltd]:IT
조직 단위 이름(예: 섹션) []:maintenance
일반 이름(예: 이름 또는 서버의 호스트 이름) []:www.george.com
이메일 주소 []:root@mail .george.com
인증서 요청과 함께 보내려면
다음 '추가' 속성을 입력하세요
챌린지 비밀번호 []:123456
선택적 회사 이름 []:Azt
# openssl req -x509 -days 365 -key test.key -in test.csr -out test.crt --Public key
# ls --그런 다음 다음 test.crt && test.key를 /etc/httpd/conf에 구성합니다. .d/ssl.conf는
test.crt test.csr test.key
6.2일 수 있습니다. 구성한 인증서를 테스트하세요
그러나 우리가 직접 만든 인증서는 브라우저에서 인식될 때 신뢰할 수 없습니다. 상태도 "CA 루트 인증서가 "신뢰할 수 있는 루트 인증 기관" 저장소에 없기 때문에 신뢰할 수 없습니다."    
  브라우저(test.crt)에서 직접 생성한 인증서를 수동으로 추가해야 합니다. "신뢰할 수 있는 루트 인증 기관" && "신뢰할 수 있는 게시자". Google Chrome을 열로 사용하면 단계는 다음과 같습니다.

   

   그러면 "다음" - "마침" - "예"를 클릭하는 대화 상자가 몇 개 더 나타납니다. 괜찮습니다.

 
이때 브라우저를 이용하여 당사 홈페이지를 열어 "인증서에 문제가 없습니다"라는 인증서 상태를 확인하시기 바랍니다.

위 내용은 HTTP 서비스 구축 예시에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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