Apache는 conf 파일과 어떤 파일을 어떤 순서로로드합니까?


10

웹 프레임 워크가 설치된 CentOS 6.5 서버를 여러 해 동안 추가 한 것을보고 있습니다. httpd.conf를 포함하여 / conf에 5 개의 활성 .conf 파일이 있습니다.

httpd.conf에서 포함 읽기

Include conf.d/*.conf

그리고 그 디렉토리의 모든 파일을 가져옵니다. 그러나 내가 알고있는 특정 순서가 적용되지 않으므로 / conf (no .d) 디렉토리는 어떻습니까?

로드 순서를 나타내는 설정이 있습니까? 아니면 z에서 가져온 것입니까?

나는 서버 관리자가 아니며 개발자이고 문제는 / Temp 디렉토리에 파일을 업로드하는 경로에 있습니다. 여기서 지정된 경로가 내가 관심있는 파일에 맞는지 확인했습니다.

따라서 첫 번째 질문은 다음과 같습니다.

Apache 는 / conf에서 모든 것을 로드합니까, 아니면 어딘가에 지정된 목록이 있습니까?

두 번째 질문은 다음과 같습니다.

아파치는 어떤 순서로 파일을 알파벳순으로로드합니까?

마지막으로 :

.conf로 끝나지 않는 파일이 포함됩니까? 예를 들어 이름을 myconfig.conf.old로 지정하면 Apache가 생략합니까?

답변:


14

순서는 알파벳순입니다. 포함 경로에 지정된 내용 만로드합니다. Include conf.d/*.conf아파치 의 경우 이름이으로 끝나는 모든 파일을로드합니다 .conf.

이것은 Apache Documentation 에서 발췌 한 것입니다 .

쉘 스타일 (fnmatch ()) 와일드 카드 문자를 사용하면 알파벳순으로 여러 파일을 한 번에 포함 할 수 있습니다 . 또한 Include가 파일이 아닌 디렉토리를 가리키는 경우 Apache는 해당 디렉토리 및 모든 서브 디렉토리의 모든 파일을 읽습니다. 그러나 httpd가 실패 할 수있는 디렉토리에 임시 파일을 실수로 남겨두기 쉽기 때문에 전체 디렉토리를 포함하지 않는 것이 좋습니다.


질문 1과 2에 확실히 답해 주셔서 감사합니다. 나는 아파치 문서를 보았지만 답을 찾지 못했습니다.
chrtp

구성 항목의 순서는 이전 항목보다 우선합니다. 명령이 동일한 구성 섹션에 있는지 확인하십시오. 그러나 예를 들어 (를 사용하여 AllowOverride) 구성 항목을 .htaccess파일의 구성으로 재정의 하는 것이 가능 합니다.
suspectus

죄송합니다. 댓글을보기 전에 댓글을 수정했습니다. 이 경우에는 .htaccess가 없지만 't'로 시작하는 파일은 다른 모든 것을 재정의합니다. 파일 이름을 바꾸거나 파일을 옮길 것입니다.
chrtp

1
@chrtp, 그리고 왜 파일로 시작하는 t것이 다른 모든 것을 덮어 씁니까?
앤드류 Savinykh

1

Apache는 "Include"지시문을 기반으로 추가 구성을로드합니다. 아마도 다음과 같습니다.

Include conf.d/*.conf

따라서 분명히 "* .conf"처럼 보이는 "conf.d"의 모든 것을 포함합니다.

훨씬 더 제 정신을 가지기 위해, 거의 동일한 구성 파일을 포함 할 수있는 "include"를 사용하여 임의의 수의 디렉토리를 추가 할 수 있습니다. 다양한 호스트 된 디렉토리의 .htaccess 파일

내가 알 수 있듯이 httpd.conf는 먼저 디렉토리 다음에 디렉토리가 포함 된 순서대로 알파벳순으로 나열됩니다.

좋은 시간. apachectl -t 또는 apachectl configtest를 사용하여 구성으로 인해 문제가 발생할지 여부를 알 수 있습니다.


1
고맙습니다. 누군가가 template.conf라는 파일을 거기에 남겨둔 것처럼 보입니다. 물론 마지막으로로드 된 다음 / Temp 경로를 지정하는 다른 파일을 재정의합니다. 나는 거기에 그와 다른 것이 무엇인지에 대해서만 추측 할 수 있습니다!
chrtp

1
환희에 추가하려면 @chrtp, 지시어 (을 추가하는 -C를 사용하여 런타임에 지정할 수 있습니다 전에 (을 읽어와 -c 설정 파일을 읽기) 명령 줄에서 전체 다른 설정 소스 수 있도록, 설정 파일) 시작에.
Satanicpuppy

1

순서를 변경하려면 디렉토리 사이트에서 사용 가능한 첫 번째 conf 파일을 열고 첫 번째 VirtualHost * : 80 전에 가상 호스트 코드를 추가하십시오.

제 경우에는 hub.xxx.com.conf를 bayxxx.com.conf 앞에두기를 원합니다. 그래서 hub.xxx.com.conf를 열고 파일의 시작 부분에 가상 호스트를 놓습니다.

예를 들면 다음과 같습니다.

<VirtualHost *:80>
    DocumentRoot /www/hub.xxx.com/www/root
    ServerName hub.xxx.com
    ServerAlias *.hub.xxx.com
    <Directory "/www/hub.xxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/bayxxx.com/www/root
    ServerName bayxxx.com
    ServerAlias www.bayxxx.com
    <Directory "/www/bayxxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.