[ http_error_code ]


HTTP(하이퍼텍스트 전송 프로토콜) 응답 상태 코드란 현제의 error 상태를 알려주는 코드입니다.

현재 상황에 맞게 error code 를 발생시키며 , 해당 코드를 보고 문제를 유추할수 있으며, 더욱 쉽게 문제를 해결할 수 있습니다. 현재 http_error_code는 인터넷 할당 번호 관리 기관 (IANA)에서 http 상태 코드를 관리 및 유지하며,

해당 에러코드들만 잘해독해도 문제를 해결하는데 많은 도움이 될거라고 생각됩니다.


코드 목록에 따른 상태

 

1xx (조건부 응답) 요청이 수신되어 이해되었음을 나타내는 코드입니다.

 

2xx (성공) - 이 클래스의 상태 코드는 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킵니다.

 

3xx (리다이렉션 완료) 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 함을 나타냅니다.

 

4xx (요청오류) 이 클래스의 상태코드는 클라이언트에 오류가 있음을 나타냅니다.

 

5xx (서버오류) 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타냅니다.



2. http_error_code 원인 및 문제해결

 

2-1 4xx (요청오류) 원인 및 문제해결

 

400 Bad Request, 요청 실패

원인 : 문법상 오류가 있어서 서버가 요청 사항을 이해하지 못할때 발생되는 에러

해결방법 : 주소를 정확히 입력하거나 , 문법을 정확하게 입력하여 해결




401 코드 - Unauthenticated 인증실패


401 Bad Request, 요청 실패

원인 : 401 response(응답) 를 받은 클라이언트는 적절한 Authorization(권한부여) credentials(신용 증명 물)를 포함하는 Authorization 헤더와 함께 다시 Request 메시지를 전송합니다. Request 메시지에 그와 같은 Authorization credentials이 포함된 경우에 401 상태코드가 전달되면 user authentication(인증)이 실패한 것을 나타낸다.

해결방법 : 즉 인증에 실패한것임으로 적절한 권한이 있는 사용자로 인증을 받아 해결

 

401.1 Unauthorized, 권한 없음 로그온 실패

원인 : 서버에 로그온 하려는 요청 사항이 서버에 들어있는 권한과 비교했을 시 맞지 않을 경우 발생.

해결방법 : 아이디 및 패스워드를 정확하게 입력하여 해결

 

401.2 Unauthorized, 권한 없음

원인 : 서버에 로그온 하려는 요청사항이 서버에 들어있는 권한과 비교했을 때 맞지 않았을 경우 발생

이것은 일반적으로 적절한 www-authenticate head field를 전송하지 않아서 발생함.

해결방법 : 적절한 www-authenticate head field를 전송하여 해결

 

401.3 Unauthorized, 권한 없음 - 자원에 대한 ACL에 기인한 권한 없음.

원인 : 클라이언트가 특정 자원에 접근할 수 없을 때 발생. 이 자원은 페이지가 될 수도 있고, 클라이언트의 주소 입력란에 명기된 파일일 수도 있다. 또한, 클라이언트가 해당 주소로 접속할 때 이용되는 또 다른 파일일 수도 있습니다.

해결방법 : 접근할 전체 주소를 다시 확인해 보고 웹 자원에 접근할 권한을 부여받아 해결



403 코드 Forbidden 인가실패

 

403.1 Forbidden, 금지 - 실행 액세스 금지

원인 : CGIISA-PI, 혹은 수행시키지 못하도록 되어 있는 디렉터리 내의 실행 파일을 수행시키려고 했을 때 발생

해결방법 : 해당 기능을 사용할수 있도록 설정 및 권한등을 부여하여 해결

 

403.2 Forbidden, 금지 읽기 엑세스 금지

원인 : 원인 : 브라우저가 접근한 디렉터리에 접근가능한 디폴트 페이지가 없을 경우에 발생

해결방법 : 해당 디렉터리에 접근 가능한 디폴트 페이지를 생성하거나 권한을 부여하여 해결

 

403.3 Forbidden, 금지 쓰기 엑세스 금지

원인 : 원인 : 브라우저가 접근한 디렉터리에 쓰기 가능한 권한이 부여되지 않았을 때 발생

해결방법 : 해당 디렉터리에 쓰기 가능한 권한을 부여하여 해결

 

403.4 Forbidden, 금지 SSL 필요

원인 : SSL(https) 프로토콜을 사용 하여 들어오는 요청을 원하지만 http 프로토콜 사용하여 요청을 보낼때 발생

해결방법 : https로 시작하는 URL 확인 하거나 , 서버에서 웹사이트에 대한 ssl 필요 옵션을 제거하여 해결

 

403.5 Forbidden, 금지 SSL 128bit 필요

원인 : 웹서버가 128bit SSL 연결을 요구 하도록 구성되어 있지만 클라이언트 브라우저에서 128bit 암호화를 지원하지 않을때 발생

해결방법 : 클라이언트에서 128bit ssl을 지원하는 웹 브라우저를 사용하거나 , 웹서버에서 SSL 통신의 보안 수준을 낮추어 문제 해결

 

403.6 Forbidden, 금지 IP 주소 거부

원인 : IpSecurity XML 요소의 allowUnlisted 속성의 값은 false이며, 클아이언트 컴퓨터의 IP주소 ipSecurity XML 요소 아래에 IP주소 목록에 나타나지 않습니다. IIS IP주소 ipSecurity XML 요소 아래 목록에 표시 되지 않는 IP 주소에서 모든 요청을 거부하기 때문에 발생

해결방법 : IpSecurity XML 요소를 찾은 후 allowUnlisted 속성의 값을 true로 설정하거나, IpSecurity XML 요소 아래 IP 주소의 목록에서 클라이언트 컴퓨터의 IP 주소를 찾아 수 속성의 값을 true로 설정하여 해결가능 하지만 서버 보안 수준이 떨어질 수 있음.

403.7 Forbidden, 금지 클라이언트 인증서 필요

원인 : 클라이언트 확인 필요. 이 에러는 접근하려는 자원이 서버가 인식하기 위해서 브라우저에게 클라이언트 SSL을 요청하는 경우 발생함. 자원을 이용할 수 있는 사용자임을 입증하는데 사용됨

해결방법 : 웹사이트에서 신뢰하는 인증기관에서 클라이언트 인증서를 발급받아 인증서를 구성하여 해결 하거나, 웹서버에서 SSL 설정값에서 클라이언트 인증서에서 수락 옵션을 선택 및 적용하여 문제해결

 

403.8 Forbidden, 금지 사이트 액세스 거부

원인 : 웹사이트 명시적으로 클라이언트 컴퓨터에서 요청을 거부 하도록 구성되어있기 때문에 발생. IIS는 클라이언트 컴퓨터의 DNS 이름을 확인 하여 명시적으로 요청을 거부함

해결방법 : ApplicationHost.config 파일에서 IpSecurity XML 요소에서 true로 클아이언트 컴퓨터에 대한 도메인 이름 XML요소의 수 속성값을 설정 ( domainName 추가 = “Client_Computer” 허용 = “true” /> )

 

403.9 Forbidden, 금지 연결된 사용자수 과다

원인 : 웹 서버에 연결한 사용자의 수가 웹서버 관리자가 설정한 연결 제한을 초과한 경우에 발생

해결방법 : 웹 서버에 연결할 수 있는 제한을 늘려 해당 문제 해결

 

403.10 Forbidden, 금지 설정이 확실하지 않음

원인 : 웹 서버의 설정쪽에 문제가 있어 접근이 불가능 할 경우에 발생

해결방법 : 웹 설정을 알맞게 변경하여 문제 해결

 

403.11 Forbidden, 금지 패스워드 변경됨

원인 : 사용자 확인단계에서 잘못된 패스워드를 입력했을 경우 발생

해결방법 : 페이지를 갱신한 후 정확한 패스워드를 입력하여 문제 해결

 

403.12 Forbidden, 금지 Mapper 접근 금지

원인 : 클라이언트 인증서 매핑 구성된 사용자 계정이 요청된 파일에 대한 읽기 권한이 없기 때문에 발생

해결방법 : 해당 파일에 대해 읽기 권한을 부여하여 해결

 

404 Not Found

원인 : 클라이언트가 요청한 디렉터리나 파일이 웹서버에 존재하지 않았을때 발생

해결방법 : URL을 다시 잘 보고 주소가 올바로 입력되었는지 확인

 

404.2 Not Found ISAPI 또는 CGI가 제한됨

원인 : ISAPI 인터넷 서버 API 리소스나 요청한 CGI 리소스가 제한되어 발생

해결방법 : ISAPI CGI 제한 페이지에서 요청한 자원의 제한을 허용하여 해결

 

404.3 Not Found MIME 형식제한

원인 : 요청된 파일 이름 확장명에 대한 처리기 매핑이 구성되어 있지 않을 때 발생

해결방법 : MIME 형식에서 필요한 파일 및 MIME 형식 확장자명을 추가하여 문제 해결

 

404.7 Not Found 파일 확장명이 거부됨

원인 : 윈도우 서버일 경우 allowUnlisted 특성이 false로 설정되어 있거나 , 서버 내에서 해당 파일의 파일이름 확장명이 표시되어 있지 않을때 발생

해결방법 : ApplicationHost.config 파일에서 RequestFiltering 섹션에서 FileExtensions allowUnlisted 값을 true로 변경하거나, 해당파일의 확장자가 보이도록 보기옵션을 변경하여 문제 해결

 

404.9 Not Found 파일 특성이 숨겨짐

원인 : 요청한 파일이 숨겨져 있을때 해방 문제 발생

해결방법 : 해당파일이 숨겨져 있으며, 숨겨져 있는 옵션을 취소하여 문제 해결

 

405 Method not allowed

원인 : Request 라인에 명시된 메소드를 수행하기 위해 해당 자원의 이용이 허용되지 않았을때 발생

해결방법 : 요청한 자원에 적절한 MIME 타입을 갖고 있는지 확인 후 MIME타입을 적절하게 입력할 것

 

407 Proxy Authentication Required

원인 : 해당 요청이 수행되도록 Proxy 서버에게 인증을 받아야 할때 발생

해결방법 : Proxy 서버로 로그온 한 후에 다시 시도하여 해결

408 Request timeout

원인 : 레지스트리에 문제가 발생하였거나, 악성 프로그램 감염이 되었거나 , 디스크 문제 등으로 요청이 지연되는 경우에 해당 문제 발생

해결방법 : 손상된 레지스트리를 복원 , 악성프로그램 제거 , 디스크 문제 확인 등으로 해당문제 해결

 



2-2 5xx (요청오류) 원인 및 문제해결

 

500 서버 내부 오류

원인 : syntax error , 권한 , 변수정의 , 특수문자 처리 , 전송방식 지정 , 데몬상태 등 다양한 이유로 요청사항이 서버 내부에서 수행할 수 없을 때 발생

해결방법 : 사실상 500에러는 상당히 광범위하며, 500에러가 발생하였을때 서버 내부에서 확인해야 한다.

문법확인 , 권한지정 , 변수 및 특수문자처리부분 , 데몬의 버전이 안맞는다거나, 데몬이 멈춰있다거나 등의 이유로 발생하는데, 각각의 증상에 따라 적절하게 대응하여 문제를 해결

501 서버 내부 오류 Not Implemented

원인 : 시스템에서 CGI를 지원하지 못하도록 막아두었거나, CGI설정이 제대로 되어있지 않을 경우 발생

해결방법 : CGI를 사용할수 있도록 수정을 하여 문제를 해결

 

502 서버 내부 오류 Bad Gateway

원인 : 접속자수가 많아 과부하 상태거나 , 클라이언트 브라우저에 이상이 있을때 문제 발생

해결방법 : 주로 과부하 상태일때 많이 발생되며, 서버 사양을 업그레이드 하거나, 사용자가 많지 않을때 접근하거나 , 웹서비스를 재시작하여, 일시적으로 문제를 해결

 

503 서버 내부 오류 server Unavailable

원인 : 서비스가 현재 멈춘 상태이거나 일시적인 과부하 상태 및 관리(유지,보수) 때문에 요청을 처리하지 못할 경우 발생

해결방법 : 관련 데몬이 다운되어있을 가능성이 크며, 해당 데몬을 실행시켜 문제 해결





3. 에러페이지 변경

 

3-1 기본 에러페이지 변경

http_error_code를 발생시키는데 클라이언트들에게 이러한 코드를 보여줄 필요는 없다고 생각합니다.

httpd.conf 파일에 아래내용을 추가하여 해당 에러코드가 발생될때 특정 페이지를 보여주도록 설정할수 있습니다.물론 해당 페이지의 소스코드는 직접 개발해야 합니다.

 

httpd.conf 파일 수정

Alias /error_page "/home/les" error_page의 경로 설정

Alias /error_image "/home/les" error_page의 경로 설정

ErrorDocument 404 /error_page/404.htm 404 error_page의 보여질 페이지의 파일 경로

ErrorDocument 403 /error_page/403.htm 403 error_page의 보여질 페이지의 파일 경로

위처럼 원하는 에러코드의 번호를 추가하여 해당 에러코드가 발생될때 특정 페이지가 보이도록 설정가능합니다

 


아파치 설정하기 전 404에러가 발생하였을때 기존 페이지


 

아파치 설정 후 404에러가 발생하였을때 페이지


'Linux Server > apache' 카테고리의 다른 글

[apache] ip 접속 제어  (0) 2018.02.09
[apache] letsencrypt 설치 및 설정  (2) 2017.08.03
[apache] ssl 키 발급 및 적용  (0) 2017.06.03
[php 언어셋 문제]  (0) 2017.05.09
[apache] cband 모듈설치  (0) 2017.04.27
Posted by 실력키우기

[ apache 접속제어 ]


apache 에서 특정 ip 접속 제어를 하기위해 httpd.conf or httpd-vhosts.conf에서 설정



vi /usr/local/apache/conf/extra/httpd-vhosts.conf


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

해당 도메인으로 접속을 전부 거부함

<VirtualHost *:80>

    DocumentRoot "/home/web/"

    ServerName leeeunseok.xyz

    ErrorLog "logs/leeeunseok.xyz_error_log"

    CustomLog "logs/leeeunseok.xyz_access_log" common

<Directory "/home/web/">

Order deny,allow

require all denied

</Directory>

</VirtualHost>


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

해당 도메인으로 115.68.87.2의 아이피만 접속을 허용함

<VirtualHost *:80>
    DocumentRoot "/home/web/"
    ServerName leeeunseok.xyz
    ErrorLog "logs/115.68.220.220_error_log"
    CustomLog "logs/115.68.220.220_access_log" common
<Directory "/home/web/">
Order deny,allow
require all denied
require ip 115.68.87.2
</Directory>
</VirtualHost>


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

해당 도메인으로 115.68.87.2의 아이피만 접속을 거부함


<VirtualHost *:80>

    DocumentRoot "/home/web/"

    ServerName leeeunseok.xyz

    ErrorLog "logs/115.68.220.220_error_log"

    CustomLog "logs/115.68.220.220_access_log" common

<Directory "/home/web/">

Order deny,allow

Require all granted

Require not ip 115.68.87.2

</Directory>



----------------------------------------------------------------------------------------------------------------------------------------------------------------------

위의 룰은 아파치 2.4의 룰이며 , 그 이하의 버전에서의 설정은 아래를 참고



전처접근 차단 후 특정아이피 허용

deny from all

allow from 127.0.0.1


전체접근 허용후 특정 아이피 차단

allow from all

deny from 127.0.0.1

'Linux Server > apache' 카테고리의 다른 글

[apache] http_error_code  (0) 2018.02.26
[apache] letsencrypt 설치 및 설정  (2) 2017.08.03
[apache] ssl 키 발급 및 적용  (0) 2017.06.03
[php 언어셋 문제]  (0) 2017.05.09
[apache] cband 모듈설치  (0) 2017.04.27
Posted by 실력키우기

[ letsencrypt 설치 및 설정 ]


# git clone https://github.com/letsencrypt/letsencrypt


# cd letsencrypt


# ./letsencrypt-auto --help     ->  다운받은 폴더로 이동 후 아래 명령을 실행하면 자동으로 관련 의존성을 다운받아서 설치 된다.


# ./letsencrypt-auto certonly -a webroot --agree-tos -m <이메일> -w <webrootpath> -d <SSL발급도메인명> --rsa-key-size 4096

ex) ./letsencrypt-auto certonly -a webroot --agree-tos -m les4707@naver.com -w /home/web/ -d leeeunseok.xyz --rsa-key-size 4096



주의) 발급을 원하는 도메인은 반드시 웹접속이 가능한 상태어어야 한다. ( 웹서버, DNS , 방화벽 확인 필요)
 (주) 최초 발급 시도시 아래의 메세지가 표시되며, 이후 물어보지 않는다.
 EFF의 Let’s Encrypt 관련 소식을 이메일로 받고 싶다면 “y”를 원하지 않는 다면, “n” 입력 한다.
-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: n



기본 포트를 SSL으로 이용하는 경우


vi /usr/local/apache/conf/extra/httpd-ssl.conf


<VirtualHost *:443>


DocumentRoot 웹루트경로

ServerName 도메인명:443

SSLEngine on 

SSLCertificateFile /etc/letsencrypt/live/도메인명/cert.pem

SSLCertificateKeyFile /etc/letsencrypt/live/도메인명 /privkey.pem

SSLCertificateChainFile /etc/letsencrypt/live/도메인명/fullchain.pem  


<VirtualHost>


이후 아파치 재시작


[root@techsmile-6580 letsencrypt]# /etc/init.d/apachectl stop

AH00526: Syntax error on line 51 of /usr/local/apache/conf/extra/httpd-ssl.conf:

Invalid command 'SSLCipherSuite', perhaps misspelled or defined by a module not included in the server configuration


아파치 재시작시 위와 같이 에러발생할경우 아래파일을 열고 주석해제

vi /usr/local/apache/conf/httpd.conf

LoadModule ssl_module modules/mod_ssl.so -> 해당부분 주석해제



[root@techsmile-6580 letsencrypt]# /etc/init.d/apachectl stop

AH00526: Syntax error on line 76 of /usr/local/apache/conf/extra/httpd-ssl.conf:

SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).


아파치 재시작시 위와 같이 에러발생할경우 아래파일을 열고 주석해제

vi /usr/local/apache/conf/httpd.conf

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so     -> 해당부분 주석해제





letsencrypt는 3달에 한번씩 갱신해줘야하며, 아래 내용은 도메인 갱신하는 명령어입니다.


/letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default -w <webrootpath> -d <ssl갱신도메인명> --rsa-key-size 4096



vi letscron.sh    ->    스크립트 만들고 크론탭에 약2달에한번 실행되도록 등록할것

#!bin/sh

echo /letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default -w /home/web/ -d leeeunseok.xyz --rsa-key-size 4096

'Linux Server > apache' 카테고리의 다른 글

[apache] http_error_code  (0) 2018.02.26
[apache] ip 접속 제어  (0) 2018.02.09
[apache] ssl 키 발급 및 적용  (0) 2017.06.03
[php 언어셋 문제]  (0) 2017.05.09
[apache] cband 모듈설치  (0) 2017.04.27
Posted by 실력키우기

[ openssl 키발급

# openssl genrsa -des3 -out leeeunseok.xyz.key 2048

# openssl req -new -key leeeunseok.xyz.key -out leeeunseok.xyz.csr


Country Name ( 국가코드) [] : KR
State or Province Name ( 지역 ) [] : Seoul
Locality Name ( 시/군/구 ) [] : Seocho
Organization Name ( 회사명 ) [] : Hanbiro Inc
Organizational Unit Name ( 부서명 ) [] : Linux Team
Common Name ( 서비스도메인명 ) [] : www.hanbiro.com
Email Address [] : hanbiro@hanbiro.com




[ ssl 적용 


apache 2.4버전 



Listen 443


##

##  SSL Global Context

##

##  All SSL configuration in this context applies both to

##  the main server and all SSL-enabled virtual hosts.

##


#   SSL Cipher Suite:

#   List the ciphers that the client is permitted to negotiate.

#   See the mod_ssl documentation for a complete list.

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5


#   Speed-optimized SSL Cipher configuration:

#   If speed is your main concern (on busy HTTPS servers e.g.),

#   you might want to force clients to specific, performance

#   optimized ciphers. In this case, prepend those ciphers

#   to the SSLCipherSuite list, and enable SSLHonorCipherOrder.

#   Caveat: by giving precedence to RC4-SHA and AES128-SHA

#   (as in the example below), most connections will no longer

#   have perfect forward secrecy - if the server's key is

#   compromised, captures of past or future traffic must be

#   considered compromised, too.

#SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5

#SSLHonorCipherOrder on 


#   Pass Phrase Dialog:

#   Configure the pass phrase gathering process.

#   The filtering dialog program (`builtin' is an internal

#   terminal dialog) has to provide the pass phrase on stdout.

#SSLPassPhraseDialog  builtin

SSLPassPhraseDialog exec:/usr/local/apache/conf/ssl_pass.sh


#   Inter-Process Session Cache:

#   Configure the SSL Session Cache: First the mechanism 

#   to use and second the expiring timeout (in seconds).

#SSLSessionCache         "dbm:/usr/local/apache/logs/ssl_scache"

SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"

SSLSessionCacheTimeout  300


##

## SSL Virtual Host Context


<VirtualHost _default_:443>


#   General setup for the virtual host



ServerAdmin joyjts@naver.com

DocumentRoot /home/les/public_html

ServerName leeeunseok.com:443

ErrorLog "/usr/local/apache/logs/leeeunseok.com_SSL_error_log"

TransferLog "/usr/local/apache/logs/leeeunseok.com_SSL_access_log"


#   SSL Engine Switch:

#   Enable/Disable SSL for this virtual host.

SSLEngine on


SSLCertificateFile "/usr/local/apache/conf/SSL_2017/leeeunseok.com_cert.pem"

SSLCertificateKeyFile "/usr/local/apache/conf/SSL_2017/leeeunseok.com.key"

SSLCertificateChainFile "/usr/local/apache/conf/SSL_2017/leeeunseok.com_ChainCA.crt"



위처럼 키값 및 패스워드 자동 적용되도록 설정 후 /usr/local/apache/conf/ssl_pass.sh로 스크립트 생성

vi ssl_pass.sh

#!/bin/sh 
echo "password"


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



Listen 443


AddType application/x-x509-ca-cert .crt

AddType application/x-pkcs7-crl    .crl


SSLPassPhraseDialog  builtin

SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"

SSLSessionCacheTimeout  300

#SSLMutex  "file:/usr/local/apache/logs/ssl_mutex"


<VirtualHost int.empel.co.kr:443>

DocumentRoot "/home/les/public_html"

ServerName int.les.co.kr:443

ServerAlias int.les.co.kr

ErrorLog "/usr/local/apache/logs/error_log"

TransferLog "/usr/local/apache/logs/access_log"

SSLEngine on

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

SSLCertificateFile "/usr/local/apache/conf/extra/SSL/empel/int.les.co.kr.crt"

SSLCertificateKeyFile "/usr/local/apache/conf/extra/SSL/empel/int.les.co.kr.key"

SSLCertificateChainFile "/usr/local/apache/conf/extra/SSL/empel/int.les.co.kr.Chain.crt"

<FilesMatch "\.(cgi|shtml|phtml|php)$">

    SSLOptions +StdEnvVars

</FilesMatch>

<Directory "/usr/local/apache/cgi-bin">

    SSLOptions +StdEnvVars

</Directory>

BrowserMatch ".*MSIE.*" \

         nokeepalive ssl-unclean-shutdown \

         downgrade-1.0 force-response-1.0

CustomLog "/usr/local/apache/logs/ssl_request_log" \

          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>


'Linux Server > apache' 카테고리의 다른 글

[apache] ip 접속 제어  (0) 2018.02.09
[apache] letsencrypt 설치 및 설정  (2) 2017.08.03
[php 언어셋 문제]  (0) 2017.05.09
[apache] cband 모듈설치  (0) 2017.04.27
[apache] rewrite 모듈을 이용한 http -> https 포워딩  (0) 2017.04.26
Posted by 실력키우기

http://m.blog.naver.com/csaiur/220237429476

Posted by 실력키우기

[cband 모듈설치]


cband 모듈이란 도메인 별로 트래픽을 제한할수 있으며, 트래픽 사용량을 확인할 수 있다.



# tar -zxvf mod-cband-0.9.7.5.gz    ->    해당 파일 압축풀기


# cd mod-cband-0.9.7.5    ->    해당 결로 이동


# ./configure --with-apxs=/usr/local/apache/bin/apxs    ->    컨피그


# make    ->    make 시 아래처럼 에러가 발생할 가능성이 있다.


/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c

/usr/local/apache/build/libtool --silent --mode=compile gcc -std=gnu99 -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache/include  -I/usr/local/apache/include   -I/usr/local/apache/include  -Wall -DDST_CLASS=3  -c -o src/mod_cband.lo src/mod_cband.c && touch src/mod_cband.slo

src/mod_cband.c: In function 'mod_cband_create_traffic_size':

src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior

src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior

src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior

src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior

src/mod_cband.c: In function 'mod_cband_get_dst':

src/mod_cband.c:1333: error: 'conn_rec' has no member named 'remote_ip'

src/mod_cband.c: In function 'mod_cband_get_remote_host':

src/mod_cband.c:1362: error: 'struct conn_rec' has no member named 'remote_ip'

src/mod_cband.c:1363: error: 'struct conn_rec' has no member named 'remote_ip'

src/mod_cband.c:1365: error: 'struct conn_rec' has no member named 'remote_addr'

apxs:Error: Command failed with rc=65536

.

make: *** [src/.libs/mod_cband.so] 오류 1


# cd /home/les/mod-cband-0.9.7.5/src/    ->    해당 경로로 이동


# vi mod_cband.c    ->    해당 파일 수정


빨간색 : 수정전

파란색 : 수정후


1333번 라인

p.add.sin.s_addr = inet_addr(r->connection->remote_ip);
p.add.sin.s_addr = inet_addr(r->connection->client_ip);

1342번 라인
   fprintf(stderr,”%s leaf %s\n”,r->connection->remote_ip,leaf);
   fprintf(stderr,”%s leaf %s\n”,r->connection->client_ip,leaf);

1362~1365번 라인
if (c->remote_ip != NULL)
addr = inet_addr(c->client_ip);
else
addr = c->remote_addr->sa.sin.sin_addr.s_addr;

if (c->client_ip != NULL)
addr = inet_addr(c->client_ip);
else
addr = c->client_addr->sa.sin.sin_addr.s_addr;

# make

# make install

이후에 httpd.conf 파일에 LoadModule cband_module       modules/mod_cband.so 이 생성되어있을 것이다.

# vi httpd.conf     ->    해당 파일 열어서 설정 값 입력

<IfModule mod_cband.c>

    <Location /cband-status-me>

        SetHandler cband-status-me

    </Location>

    <Location /~*/cband-status-me>

        SetHandler cband-status-me

    </Location>

    <Location /cband-status>

        SetHandler cband-status

        Order deny,allow

        Deny from all

        Allow from all    ->    all 대신 ip 입력시 해당 ip에서만 상태페이지 접속 가능

    </Location>

</IfModule>


# vi httpd-vhost.conf

<VirtualHost *>

    ServerName yourdomain.com    

    Document /home/test/

    CBandLimit 500Mi    ->  500M 허용

    CBandPeriod 1D    ->     1일간

    CBandExceededURL http://yourdomain.com/traffic_exceeded.html    ->     트래픽초과시 보여지는 페이지

</VirtualHost>


이후에 yourdomain/cband-status 로 접속하시면 트래픽 사용량을 확인할 수 있습니다.


'Linux Server > apache' 카테고리의 다른 글

[apache] ssl 키 발급 및 적용  (0) 2017.06.03
[php 언어셋 문제]  (0) 2017.05.09
[apache] rewrite 모듈을 이용한 http -> https 포워딩  (0) 2017.04.26
[apache] 모듈 userdir  (0) 2017.01.10
[apache] apache 소스설치 (2.4.3)  (0) 2016.09.21
Posted by 실력키우기

[ apache rewrite 모듈을 이용한 http -> https 포워딩 ]


웹사이트 http 에서 https 자동으로 포워딩 하고 싶을때 rewrite 모듈을 이용하면 된다.


mod_ssl 과 rewrite 모듈이 설치가 되어 있어야 한다.



[apache rewrite 모듈 설치]


# cd /usr/local/src/APM-setup/httpd-2.4.3/modules/mappers    ->    모듈을 설치하기 위해 컴파일 했던 위치로 이동


# /usr/local/apache/bin/apxs -a -i -c mod_rewrite.c


# vi /usr/local/apache/conf/httpd.conf    ->    아래 설정 값 수정


LoadModule rewrite_module modules/mod_rewrite.so    ->    해당 라인 주석 해제


AllowOverride none    ->    해당 부분을 AllowOverride All 로 변경



[rewrite 설정 적용]


# vi /usr/local/apache/conf/extra/httpd-vhost.conf    -> 해당 vhost에 아래내용 삽입하거나 , 아래처럼 홈디렉터리에 .htaccess 파일 만들어서 삽입

# vi /home/test/.htaccess    ->    해당 홈 디렉토리에 .htaccess 파일 생성 하여 아래값 작성


RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]



아파치 재시작

'Linux Server > apache' 카테고리의 다른 글

[php 언어셋 문제]  (0) 2017.05.09
[apache] cband 모듈설치  (0) 2017.04.27
[apache] 모듈 userdir  (0) 2017.01.10
[apache] apache 소스설치 (2.4.3)  (0) 2016.09.21
[apache] mod_rewrite 설치  (0) 2016.09.14
Posted by 실력키우기

[userdir 모듈]


아파치를 사용하다보면 도메인 없이 여러개의 사이트를 구축하고 확인을 해보아야 할떄가 있다.

사용자 계정별로 디렉토리가 있으며, 사이트가 여러개가 있는 환경일 경우

mod_userdir 을 사용하면된다.



# ll /usr/local/apache/modules/     -> 해당 경로에 mod_userdir.so 모듈이 존재하는지 확인 (없을경우 설치)


# vi /usr/local/apache/conf/httpd.conf    -> 해당 파일 열어서 주석처리 해제


#LoadModule userdir_module modules/mod_userdir.so    -> 해당문구 주석처리 해제

#Include conf/extra/httpd-userdir.conf        -> 해당문구 주석처리 해제


# vi /usr/local/apache/conf/extra/httpd-userdir.conf    -> 해당 파일을 열어서 내용 설정 (기본적으로 되어있기 때문에 변경 안해도됨)


UserDir public_html    -> 홈계정 아래 해당 디렉토리가 있어야 하며, 디렉터리 이름은 변경 가능하다


#

# Control access to UserDir directories.  The following is an example

# for a site where these directories are restricted to read-only.

#

<Directory "/home/*/public_html">        -> 경로에 맞게 변경해줘야 될것같지만.. 이름을 다르게해도 된다.. 솔직히 왜 되는지 모르겠다.

    AllowOverride FileInfo AuthConfig Limit Indexes

    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

    Require method GET POST OPTIONS

</Directory>


# /etc/init.d/apachectl restart    -> 설정 마친 후 아파치 재시작



위처럼 설정을 마친후 사용자 디렉토리에 public_html 이라는 디렉터리를 만들고, 그 안에 소스파일을 넣어주면됨.


ex) 


# mkdir /home/les/public_html


# vi index.html    -> 해당 명령어로 해당파일 생성후 아래처럼 아무렇게나 글씨 작성


asdfkjlhasdfjkasdfh


url 에 아이피/~les 적으면 asdfkjlhasdfjkasdfh 이런식으로 나옴 (해당계정에 대한 페이지가 뜸)







'Linux Server > apache' 카테고리의 다른 글

[php 언어셋 문제]  (0) 2017.05.09
[apache] cband 모듈설치  (0) 2017.04.27
[apache] rewrite 모듈을 이용한 http -> https 포워딩  (0) 2017.04.26
[apache] apache 소스설치 (2.4.3)  (0) 2016.09.21
[apache] mod_rewrite 설치  (0) 2016.09.14
Posted by 실력키우기

[apache 소스설치 방법]


apr , apr-util , apache , pcre 설치



[yum 으로 설치해야할 것들]

# yum -y install openssl openssl-devel mhash mhash-devel libtool libtool-ltdl libtool-ltdl-devel imap-devel imap zlib-devel zlib freetype-devel freetype libpng-devel libpng libjpeg-devel libjpeg libtiff-devel libtiff gd-devel gd pcre-devel pcre libxml-devel libxml libxml2-devel libxml2 gdbm-devel gdbm ncurses-devel ncurses curl-devel curl expat-devel expat bzip2-devel bzip2-libs bzip2 libc libc-devel libc-client-devel gcc* wget


[관련 라이브러리 apr 설치]


# cd /usr/local/src


# tar -zxvf apr-1.4.6.tar.gz


# cd apr-1.4.6


# ./configure --prefix=/usr/local/apr    -> apr 을 /usr/local/apr 경로에 설치한다.


# make


# make install



[관련 라이브러리 apr-util 설치]


# cd /usr/local/src


# tar -zxvf apr-util-1.4.1.tar.gz


# cd apr-util-1.4.1


./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr    -> apr을 /usr/local/apr-util 경로에 설치하며, apr을 참조한다.


# make


# make install



# mv /usr/local/src/apr-1.4.6 /usr/local/src/httpd-2.4.3/srclib/apr    -> 아파치 컴파일 할때 apr 경로 알아서 잡아주기 위해 옮기는작업


mv /usr/local/src/apr-util-1.4.1 /usr/local/src/httpd-2.4.3/srclib/apr-util    -> 아파치 컴파일 할때 apr 경로 알아서 잡아주기 위해 옮기는작업



[관련 라이브러리 pcre 설치]

# cd /usr/local/src

# tar -zxvf pcre-8.36.tar.gz

# cd pcre-8.36

./configure --prefix=/usr/local/pcre

# make

# make install


[apache 설치]

# cd /usr/local/src


# tar -zxvf httpd-2.4.3.tar.gz


# cd httpd-2.4.3


./configure \

--prefix=/usr/local/apache \

--enable-so \

--enable-rewrite--enable-mods-shared=all \

--enable-modules=shared \

--enable-ssl \

--with-included-apr \

--with-included-apr-util \

--with-mpms-shared=all


# make


# make install



[부팅시 자동실행]

# cp /usr/local/apache/bin/apachectl /etc/init.d/apachectl

# vi /etc/init.d/apachectl     -> 해당 파일 열어서 상단에 아래내용 추가


# chkconfig: 2345 90 90 
# description: init file for Apache server daemon 
# processname: /usr/local/apache/bin/apachectl 
# config: /usr/local/apache/conf/httpd.conf 
# pidfile: /usr/local/apache/logs/httpd.pid 


# chkconfig --add apachectl        -> 해당 명령어로 아파치 추가
# chkconfig httpd on        -> 해당 명령어로 부팅시 자동실행되도록 설정

'Linux Server > apache' 카테고리의 다른 글

[php 언어셋 문제]  (0) 2017.05.09
[apache] cband 모듈설치  (0) 2017.04.27
[apache] rewrite 모듈을 이용한 http -> https 포워딩  (0) 2017.04.26
[apache] 모듈 userdir  (0) 2017.01.10
[apache] mod_rewrite 설치  (0) 2016.09.14
Posted by 실력키우기

[mod_rewrite 설치]


# cd /usr/local/src/APM-setup/httpd-2.4.3/modules/mappers        -> 모듈을 설치하기 위하여 컴파일했던 위치로 이동합니다.


# /usr/local/apache/bin/apxs -a -i -c mod_rewrite.c        -> 명령어를 이용하여 모듈을 생성합니다.


# vi /usr/local/apache/conf/httpd.conf        -> httpd.conf 파일을 열어서 아래 내용을 수정합니다.


LoadModule rewrite_module modules/mod_rewrite.so        ->  해당라인 주석해제 


AllowOverride none        -> AllowOverride All 로 변경

'Linux Server > apache' 카테고리의 다른 글

[php 언어셋 문제]  (0) 2017.05.09
[apache] cband 모듈설치  (0) 2017.04.27
[apache] rewrite 모듈을 이용한 http -> https 포워딩  (0) 2017.04.26
[apache] 모듈 userdir  (0) 2017.01.10
[apache] apache 소스설치 (2.4.3)  (0) 2016.09.21
Posted by 실력키우기
이전버튼 1 이전버튼

블로그 이미지
공 부 하 는 직 장 인
실력키우기

태그목록

공지사항

Yesterday
Today
Total

최근에 달린 댓글