오늘은 대한입니다.
sun's longitude:300 24 57.16 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
847 번 글의 답장글: Re: 궁금한게 있습니다.
글쓴이: 산이 [홈페이지] 글쓴날: 2001년 12월 06일 23:23:51 목(저녁) 조회: 858
질문은 비교적 간단(?)한것 같은데
원하는 방향으로 설정하려면 초보자 수준에서는 조금 무리가
있군요.

[답을 얻기 위해서 알아야할 내용]

1. UserDir 지시자 설정에 대한 폭넓은 이해
2. /dev/null 장치 이해
3. CustomLog/TransferLog 지시자 설정에 대한 이해
4. 아파치 프로세스에 대한 개략적 이해
5. 아파치에서 환경 변수 지정하는 방법
6. 아파치에서 제어문 사용방법
7. 기타. 


[김성민]님이 남기신 글:

>UserDir /home/*/public_html
>
>로 하고, VirtualHost 에 sub 라는 것을 추가하면서,
>
><VirtualHost sub.abc.com>
>DocumentRoot /home/sub/public_html
></VirtualHost>
>
>로 했을때, sub.abc.com 은 잘 됩니다.
>
>sub2 라는 일반 사용자를 추가하고, abc.com/~sub2 하면 잘
됩니다.
>근데, sub.abc.com/~sub2 해도 되거든요?
>(/home/sub2/public_html 로 접속됩니다.)
>
>~가 붙은것은 무조건 UserDir 로 찾아간다는 말을 들은적이
있는데, 이거 때문인지요?
>

--->

~ 은 유닉스에서 각 사용자 홈디렉토리를 말합니다.
즉 $HOME 환경변수를 의미합니다.

따라서.

http://sub.abc.com/~sub2/

와 같은 URL은 sub.abc.com시스템의
 sub2유저의
홈 디렉토리를 의미하며,

아파치에서는 UserDir 지시자에 의해서 $HOME 디렉토리 이하에
있는 특정 디렉토리를 DocumentRoot로 지정합니다.

UserDir public_html

이라고 설정했다는 의미는

아파치가 구동되는 시스템에서

$HOME/public_html

디렉토리를 의미합니다.

$HOME은 각 유저마다 다릅니다.
예를들어 user1은 /home/user1 이 될수 있으나
user2는 /hom2/user2 가 될 수 있습니다.
각 유저 디렉토리는 /etc/passwd 파일에 명시되어 있죠..


>위와 같이 안 되게 하려면, VirtualHost 디렉토리를 다른곳에
지정해 주어야 할까요? 
>
>다른곳에 지정해야 한다면 UserDir 과 같이 cgi-bin 설정이나,
디렉토리 옵션등은 어떻게 지정을 해야하는지
궁금합니다.
>

-------->
아파치에 등록된 모든 가상호스트에 대해서 /~sub와 같은 URL을
적용하지 않으려면 

UserDir /dev/null

이라고 지정하면 됩니다. 즉 각 유저의 DocumentRoot를 강제로
/dev/null
로 지정한 경우입니다.
굳지 /dev/null뿐만 아니라 특정 파일이나 특정 디렉토리로
지정할 수도있습니다.

예:
UserDir /home/nothing

만약 특정 가상호스트에만
 적용하면
그 가상호스트 섹션안에 UserDir를 위와 같이 지정해 주면
그만이죠.
따라서 가상호스트마다
 UserDir 설정을 할 수 있으며 서로 설정내용(디렉토리)

이 틀려서 된다는 의미입니다.

또하나의 방법은
아파치를 컴파일할때 mod_userdir 모듈을 빼고 컴파일하면
되겠죠.


>-----------
>추가질문]
>
>UserDir 에서 지정된 일반 사용자 계정의 로그를 별도관리가
가능한지 궁금합니다.
>abc 라는 사용자면 도메인/~abc 라는 url 로 접속하는데, 이것에
대한 로그를 관리할 수 있는지요.
>라이코스, 한미르등을 보면 ~ 틸드를 이용해 접속하는데. 그
서버들은 각 사용자로그들을
 따로 관리하지는 않을것 같고, 그냥 루트도메인 로그에 같이
쌓이게 하는지요...
>그런 서버들은 사용자가 무진장 많은데, 만약 각 사용자
로그가 루크도메인 로그로 같이 남는다면 무진장 괴로울것
같습니다.
>아예 안쌓이게 할는 걸까요? 

========================================


글쎄요. 대형 싸이트 같은 경우의 로그 관리는 어떻게
하는지모르겠지만

각 유저마다 하나씩 로그파일을 만들면 상당한 부하를
가져올겁니다.
이는 아파치 프로세스와 관련이 있죠.
즉, 로그수만큼 아파치 프로세스가 필요한 셈입니다.

그리고 각 사용자 URL과 그렇지 않은 가상호스트와의
 URL이 틀린점이

/~aaa
/~bbb

와 같이 /~ 은 받드시 들어간다는 공통점이 있습니다.
그럼 해답은 나왔네요.
CustomLog지시자 이전에

SetEnvIfNoCase Request_URI "^/~[a-zA-Z0-9]" is_UserURL=1
또는
<LocationMatch "^/~[a-zA-Z0-9]">
 SetEnv is_UserURL 1
</LocationMatch>
# SetEnv 대신 Define지시자도 가능(할듯)
...
<IfDefine is_UserURL>
CustomLog /usr/local/apache/logs/access-allusers_log
</IfDefine>

~[a-zA-Z0-9]
는
~aaa
~bbb
와 같은 정규표현식입니다.


 
해결 방법은 이것이 전부가 아니므로 다른 지시자도 찾아서
테스트해 보는 방법 밖에 없습니다.RefererIgnore

RefererLog 


그리고 사용자 마다 로그파일을 따로따로 지정할 경우도
있는데 ...
아고....이건 나중에 직접 해봐야 알것 같네요....

쉬운것 같은데 막상하려면 어려운게 아파치인것 같군요...

 
이전글 : 궁금한게 있습니다.
다음글 : linux 서버에서 php+mysql 로딩속도관련 질문  
 from 211.35.159.131
JS(Redhands)Board 0.4 +@

궁금한게 있습니다. linux 서버에서 php+mysql 로딩속도관련 질문
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2026. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds