>  기사  >  운영 및 유지보수  >  Apache 서비스 구성 자세히 설명

Apache 서비스 구성 자세히 설명

王林
王林앞으로
2019-08-23 13:52:382922검색

Apahce 구성 지침은 핵심 지침과 타사에서 제공하는 지침의 두 부분으로 나눌 수 있습니다. Apache에서는 각 명령어가 모듈에 해당하며, 모든 모듈 중에서 가장 중요한 모듈은 core_module, so_module, http_module, mpm 모듈입니다. so_moudle을 제외한 다른 모듈은 끄거나 비활성화할 수 없습니다.

One: httpd.conf

(1) 메인 서버 부분

1, ServerName: 도메인 이름이나 IP 주소가 될 수 있는 Apache 기본 호스트 이름을 정의합니다

2, ServerRoot: 서버가 있는 디렉터리를 정의하는 데 사용됩니다. this 경로는 일반적으로 구성 중에 --prefix로 지정됩니다

3. DocumentRoot: 아파치가 페이지 서비스를 제공하는 루트 디렉터리를 지정하는 데 사용됩니다. 이 경로는 공백이 있는 경우 상대 경로가 아닌 절대 경로여야 합니다.

4 , ServerAdmin: 서버 오류 발생 후 관리자에게 이메일을 보낼 주소

5 , ServerAlias ​​​​및 Alias: 는 모두 디렉터리를 매핑하는 데 사용되지만 ServerAlias는 매핑된 주소를 식별합니다. 디렉토리는 CGI 스크립트 디렉토리로, 이 디렉토리의 모든 파일은 CGI 스크립트로 취급됩니다. 그러나 Alias는 일반 디렉터리에 매핑됩니다.

6, User 및 Group: Apache 하위 프로세스를 실행하는 데 사용되는 사용자 및 사용자 그룹을 정의하는 데 사용됩니다.

7, Listen: Apache 청취를 위한 포트 번호를 정의하는 데 사용됩니다.

8 , LoadModule 명령어: 모듈 또는 대상 파일을 로드하는 데 사용됩니다. LoadModule cgi_module 모듈/mod_cgi.so_module

9. ErrorDocument: 사용자 정의 오류 페이지 정보 ErrorDocument 500 "알 수 없는 오류" ErrorDocument 404 "/var/server/www/cgi-bin /missing_404.pl " ErrorDocument 402 http://www.nicky.com/error_402.html

10. 옵션: 해당 기능을 사용할 디렉터리를 결정합니다. 이러한 기능은 다음과 같습니다:

없음: 옵션 명령이 작동하지 않습니다

ExecCGI: 현재 디렉터리에서 CGI 스크립트가 실행되도록 허용

포함: SSI 기능 사용 허용

IncludesNOEXEC: SSI 기능 사용은 허용하지만 exec cgi 및 exec cmd 기능은 비활성화됩니다

색인: 인덱스 기능을 활성화합니다. 예를 들어 URLz 디렉토리에 대한 요청에 DirectoryIndex 지시어에 의해 지정된 인덱스 파일이 포함되어 있지 않으면 서버는 요청된 디렉토리 내용 목록을 자동으로 반환합니다.

FollowSymLinks: 다음에서 기호 링크 사용을 허용합니다. 현재 환경이지만 위치 컨테이너에서는 무시됩니다

All: MultiViews를 제외한 모든 기능을 사용합니다. 또한 옵션의 기본 매개변수이기도 합니다

MultiViews: mod_negotiations 모듈

11에서 제공하는 다중 보기 기능을 활성화하는 데 사용됩니다. ServerTokens: OS/Major/Full은 오류 바닥글 정보의 세부 사항에 영향을 미치므로 일반적으로 사용하지 않는 것이 좋습니다.

(2) 컨테이너 부분
1, 컨테이너: 모듈에서 작동합니다. 먼저 모듈이 로드되었는지 확인한 다음 처리할지 여부를 결정합니다. 즉, 판단 결과가 true인 경우에만 컨테이너의 명령이 실행되고, false인 경우에는 모두 무시됩니다. . 모듈 이름> 모듈이 로드되었는지 확인하려면

<IfModule mpm_netware_module><code><IfModule mpm_netware_module><br>    DirctoryIndex index.html <br></IfModule>

如果载入则执行
<IfModule !mpm_netware_module><br>    DirctoryIndex index.html <br></IfModule>
如果不载入则执行

2 容器:封装一组条件为真时才生效的指令,作用于 server config, virtual host, directory, .htaccess ,和IfModule区别在于,他是以模块是否加载作为判断,但是IfDefine是以条件为判断

依据

<IfDefine Proxy>

LoadModule proxy_module modules/libproxy.so

</IfDefine>

3 容器:

Directory: 让它封装的指令在它的指定的目录或者他的子目录起作用,这个目录必须是一个完整的路径,当然你也可以使用通配符* ?匹配目录,也考虑利用使用[]来确定字符范围,不过不论是哪一种都不能匹配/

<Directory /var/apache/html>

    Order Deny,Allow

Deny from all

</Directory>

上述例子禁止了对/var/apache/html目录的访问权限。任何请求到/var/apache/html都会被拒绝

如果希望目录使用正则表达式,那么需要在前面加一个~

<Directory ~ "^/var/apache[0-9]{2}/html">

    Order Deny,Allow

Allow from all

</Directory>

DirectoryMatch: 和Directory作用类似,只不过他可以直接接受正则匹配 而不需要加一个~符号

<DirectoryMatch "^/var/apache[0-9]{2}/html">

    Order Deny,Allow

Allow from all

</DirectoryMatch> DircoryIndex index.html

🎜🎜로드된 경우 🎜<IfModule! mpm_netware_module>🎜 DirectoryIndex index.html 🎜</IfModule>🎜로드되지 않은 경우 실행🎜🎜2 컨테이너: 조건이 true인 경우에만 적용되는 명령 집합을 캡슐화하고 서버 구성에 따라 작동합니다. , 가상 호스트, 디렉터리, .htaccess와 IfModule의 차이점은 모듈이 로드되었는지 여부를 판단하지만 IfDefine은 조건🎜🎜based🎜🎜<IfDefine Proxy>🎜🎜LoadModule proxy_module module/libproxy.so🎜🎜</IfDefine>🎜🎜3 컨테이너: 🎜🎜디렉토리: 캡슐화하는 명령을 넣습니다. it 지정된 디렉터리 또는 해당 하위 디렉터리가 작동합니다. 물론 이 디렉터리는 전체 경로여야 합니다. 물론 와일드카드 문자 *?를 사용할 수도 있습니다. 디렉터리 일치, 문자 범위를 결정하기 위해 [] 사용을 고려하세요. 그러나 어떤 유형이든 /🎜🎜<Directory /var/apache/html>🎜🎜와 일치할 수 없습니다. 주문 거부,허용🎜🎜모두 거부🎜🎜</Directory>🎜🎜위의 예에서는 /var/apache/html 디렉토리에 대한 액세스를 비활성화합니다. . /var/apache/html에 대한 모든 요청은 거부됩니다🎜🎜디렉토리에서 정규식을 사용하려면 ~🎜🎜<Directory ~ "^/var/apache[0-9]를 추가해야 합니다. { 2}/html">🎜🎜 주문 거부, 허용🎜🎜모두 허용🎜🎜</Directory> 🎜🎜DirectoryMatch: ~ 기호🎜🎜<DirectoryMatch "^/var/apache[0-9]{2}/html"&gt를 추가하지 않고 일반 일치를 직접 허용할 수 있다는 점을 제외하면 디렉토리와 유사합니다.🎜🎜<code> 주문 거부, 허용🎜🎜모두 허용🎜🎜</DirectoryMatch>🎜

4
Files: 파일에서만 작동하며 정규식 앞에 와일드카드와 [] 및 ~를 사용하여 정규식을 사용할 수도 있습니다
<Files "^.css " ><code><Files "^.css"><br>    Order Deny,Allow<br>Allow from All<br></Files>

FilesMatch: Files 而不需要加一个~符号
<FilesMatch ".(gif|jpe?g|png)$"><br>Order Deny,Allow<br>Allow from All<br></FilesMatch>

5 : 只是对URL进行访问控制

Order Allow,Deny
Deny from All
</Location>

如果以cgi开头URL则会被拒绝
另外还可以将URL 请求映射到Apache模块处理器上,例如使用mod_status模块:
<Location /server-status><br>SetHandler server-status<br></Location>

如果使用上面的配置。那么访问/server-status,apache会将连接交给mod_status模块处理,并返回一个Apache服务器运行状态页面

容器的处理顺序问题
Apache 会优先处理Directory 容器(但是不会处理带有正则表达式的Directory和.htaccess,)接着处理Files 和 FilesMatch 容器,再接着就是处理Location 和LocationMatch容器

<Location /var/apache/html>

    Order deny,allow

    Allow from All

</Location>

<Direcotry /var/apache/html>

     Order allow,deny

Allow from All

Deny from www.jons.com

</Direcotry> 주문 거부, 허용

모든 항목에서 허용

FilesMatch: ~ 기호를 추가하지 않은 파일<FilesMatch ".(gif|jpe?g|png ) $">Order Deny,Allow

Allow from All🎜🎜🎜5 : URL에 대한 액세스 제어🎜<위치 /cgi>
주문 허용, 거부
모두 거부
</Location>🎜🎜🎜URL이 cgi로 시작하면 거부됩니다🎜또한 URL 요청을 Apache 모듈 프로세서에 매핑할 수 있습니다. 예를 들어, mod_status 모듈을 사용하세요: 🎜🎜SetHandler server-status🎜</Location>🎜🎜위 구성을 사용하는 경우. 그런 다음 /server-status에 액세스하면 Apache는 처리를 위해 mod_status 모듈에 연결을 넘겨주고 Apache 서버 실행 상태 페이지를 반환합니다🎜🎜컨테이너 처리 순서 문제: 🎜Apache는 디렉터리 컨테이너의 우선 순위를 지정합니다(그러나 정규식으로 Directory 및 .htaccess를 처리하지 않음) Files 및 FilesMatch 컨테이너를 처리한 다음 Location 및 LocationMatch 컨테이너를 처리합니다🎜🎜<Location /var/apache/html>🎜🎜 주문 거부, 허용🎜🎜 모두 허용🎜🎜</Location>🎜🎜<Direcotry /var/apache/ html>🎜🎜<code> 주문 허용, 거부🎜🎜모두 허용🎜🎜www.jons.com에서 거부🎜🎜< ;/Direcotry>🎜🎜위의 예에서 Apache는 컨테이너를 먼저 처리하므로 마지막으로 처리된 컨테이너는 이전 Directory 구성을 덮어씁니다. 사용자의 접근이 허용되며, 컨테이너가 동일한 경우 짧은 것부터 긴 것까지 사전 순서로 처리됩니다. 🎜🎜관련 질문이 더 필요하시면 PHP 중국어 웹사이트를 방문하세요: 🎜linux 비디오 튜토리얼🎜🎜

위 내용은 Apache 서비스 구성 자세히 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제