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.