본문 바로가기

Server Story..../Linux

htaccess 작성/설정하기

1. htaccess 를 이용한 디렉토리/페이지에 인증 비밀번호 걸기

less..

우선 .htaccess 파일을 작성합니다.

AuthName "사용자 인증이 필요합니다."
AuthType Basic
AuthUserFile /인증을/해야할/디렉토리의/경로/.htpasswd
AuthGroupFile /dev/null
<Limit GET POST>
require valid-user
</Limit>

Authname 줄에는 빨간 밑줄에 들어갈 메세지를 입력합니다.
사용자 삽입 이미지

AuthUserFile 에는 .htpasswd를 넣어줄 디렉토리의 절대경로를 적습니다.
보통 보통 .htaccess 파일이 있는 위치와 같습니다. 경로명을 잘 모른다면 텔넷으로 접속하여 해당 디렉토리로 이동한 후 pwd 라는 명령어를 통해서 알 수 있습니다.
 인증을 걸을 디렉토리에 경로를 써야 합니다.
Unix 에서
echo $HOME 을 치면 경로를 알아 낼수 있습니다.

사용자 삽입 이미지

파일을 ".htaccess"로 저장하고 원하는 디렉토리에 업로드 합니다.

또는 pwd 라고 치면 풀 경로명이 나옵니다 -0-;;

그러고는 SSH 을 통해 접속합니다.
그리고 그 디렉토리로 이동합니다.
[________@________ ]$ cd public_html
[________@________ public_html]$ cd home
[________@________ home]$

그리고는 명령어
htpasswd -c .htpasswd 사용자 아이디
를 칩니다. 그리고 엔터키
사용자 삽입 이미지
비밀번호를 물을때 입력하시고 엔터 (비밀번호는 표시되지 않음)
다시한번 비밀번호 입력후 엔터.

비밀번호가 서로 맞지 않을 경우 에러가 뜨고
비밀번호가 맞으면 Adding password for user 사용자명 이 뜨게 됩니다.

그럼 끝 -0-

less..



2. htaccess 를 이용한 에러 페이지.

less..

1번과 같은 걸 설정하고 사용자 인증이 실패하면 에러 페이지가 뜹니다.
꼭 그런 경우가 아니더라고 페이지가 없거나 서버 에러등으로 인한 에러가 뜰데 각각의 에러 페이지로 가게 하는 방법입니다.
ErrorDocument ??? /경로/파일

??? 에는 에러 코드를, 경로/파일에는 띄우고 싶은 페이지를 설정하면 됩니다.

에러 리스트

Error 닫기

100 : Continue
101 : Switching protocols
200 : OK, 에러없이 전송 성공
201 : Created, POST 명령 실행 및 성공
202 : Accepted, 서버가 클라이언트 명령을 받음
203 : Non-authoritative information, 서버가 클라이언트 요구 중 일부 만 전송
204 : No content, 클라언트 요구을 처리했으나 전송할 데이터가 없음
205 : Reset content
206 : Partial content
300 : Multiple choices, 최근에 옮겨진 데이터를 요청
301 : Moved permanently, 요구한 데이터를 변경된 임시 URL에서 찾았음
302 : Moved temporarily, 요구한 데이터가 변경된 URL에 있음을 명시
303 : See other, 요구한 데이터를 변경하지 않았기 때문에 문제가 있음
304 : Not modified
305 : Use proxy
400 : Bad request, 클라이언트의 잘못된 요청으로 처리할 수 없음
401 : Unauthorized, 클라이언트의 인증 실패
402 : Payment required, 예약됨
403 : Forbidden, 접근이 거부된 문서를 요청함
404 : Not found, 문서를 찾을 수 없음
405 : Method not allowed, 리소스를 허용안함
406 : Not acceptable, 허용할 수 없음
407 : Proxy authentication required, 프록시 인증 필요
408 : Request timeout, 요청시간이 지남
409 : Conflict
410 : Gone, 영구적으로 사용할 수 없음
411 : Length required
412 : Precondition failed, 전체조건 실패
413 : Request entity too large,
414 : Request-URI too long, URL이 너무 김
415 : Unsupported media type
500 : Internal server error, 내부서버 오류(잘못된 스크립트 실행시)
501 : Not implemented, 클라이언트에서 서버가 수행할 수 없는 행동을 요구함
502 : Bad gateway, 서버의 과부하 상태
503 : Service unavailable, 외부 서비스가 죽었거나 현재 멈춤 상태
504 : Gateway timeout
505 : HTTP version not supported

Error 닫기


less..


3. 외부링크 차단하기

less..

간혹 계정에 있는 이미지나 각종 파일들의 링크를 어디에 올려 트래픽만 늘어나는 경우가 있습니다.
이를 방지하기 위한 방법.. 외부 링크 차단하기..
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?5hoon.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule \.(jpg|JPG|gif|GIF)$ - [NC,F,L]
3번째 줄부터 허용할 도메인을 적고, 마지막 줄 괄호 안에는 허용하지 않을 확장자 들을 적으시면 됩니다.

less..


4. 특정 ip 차단하기

less..

가끔 트래픽을 유발하거나 방해가되는 ip 를 차단해야할 경우.
Order Deny,Allow
Deny from 192.168.1.1
Deny from 127.0.0.1
Deny from 다음에 차단할 ip 를 적으시면 됩니다.

less..


5. 서브 도메인 설정하기.

less..

도메인 http://5hoon.com 에 http://blog.5hoon.com 을 쓰기 위해서 호스팅 업체가 서브 도메인을 지원해주지 않으면 htaccess 의 rewrite 모듈로 설정할수 있습니다. 다만 도메인이 지원을 해야 한다는..

RewriteEngine On
RewriteBase /
RewriteCond $1 !^(blog)/
RewriteCond %{HTTP_HOST} ^blog\.5hoon\.com [NC]
RewriteRule ^(.*)$ /blog/$1 [L]
3~5번째 줄을 복사후 계속 딴걸로 바꾸면 많은 서브 도메인들을 사용할수 있습니다.

less..


6. 디렉토리내 파일 목록보기.

less..

디렉토리로 접속하면 기본적으로 index.html,index.php 의 파일로 연결되거나 404 에러가 뜨는 경우가 일반적 입니다. 그러나 이때 디렉토리내에 있는 파일들을 보고 싶을때..
<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>
Options Indexes
order deny,allow
첫 세줄은 .htaccess 와.htpasswd 의 접근을 막는 것입니다... 이게 보이면 -_-;
반대로 디렉토리내 파일 목록을 공개 하지 않을려면 4번째줄의
Options Indexes


Options -Indexes

로 바꾸면 됩니다.