Apache 구성에서 변수 사용

Apache 구성에서 변수 사용

다양한 하위 도메인을 구성하기 위해 Apache2 구성에 기본적으로 동일한 구성 파일이 많이 있습니다. 대부분의 구성 파일에서는 하위 도메인 자체만 다른 파일과 다르게 이름이 지정되므로 구성 파일 상단에 일종의 변수를 설정하여 ServerName, DocumentRoot, ErrorLog, 같은 것을 쉽게 설정할 수 있는지 알아보려고 합니다.CustomLog

다음과 같은 것(분명히 작동하지 않습니다):

subdomain=blog

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName ${subdomain}.example.com
        DocumentRoot /var/www/${subdomain}.example.com/htdocs

        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel warn
        ErrorLog /var/log/apache2/${subdomain}.example.com_error.log
        CustomLog /var/log/apache2/${subdomain}.example.com_access.log combined

        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

subdomain더 현명한 해결책은 구성 파일의 파일 이름에 대한 정규식을 통해 변수를 설정할 수 있는 것입니다 .

내가 찾았어동적으로 구성된 대규모 가상 호스트, 그러나 내가 원하는 것이 정확히 무엇인지 설명하지는 않습니다.

Linux에서 Apache 2.2를 실행합니다.

답변1

펄 데모Template::Toolkittpage( 모듈과 함께 설치된 명령을 사용하기 위해 Perl을 배울 필요가 없습니다 ):

템플릿 파일:

$ cat vhost.tpl
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName [% subdomain %].example.com
        DocumentRoot /var/www/[% subdomain %].example.com/htdocs

        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel warn
        ErrorLog /var/log/apache2/[% subdomain %].example.com_error.log
        CustomLog /var/log/apache2/[% subdomain %].example.com_access.log combined
</VirtualHost>

구성 생성:

$ tpage --define subdomain=domain.tld --interpolate vhost.tpl
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName domain.tld.example.com
        DocumentRoot /var/www/domain.tld.example.com/htdocs

        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel warn
        ErrorLog /var/log/apache2/domain.tld.example.com_error.log
        CustomLog /var/log/apache2/domain.tld.example.com_access.log combined
</VirtualHost>

답변2

가장 유연한 옵션은 일부 외부 프로그램을 사용하여 템플릿을 기반으로 Apache 구성을 생성하는 것입니다. 유닉스의 전통적인 프로그램은M4, 아마도 지금은 조금 덜 바로크적이기는 하지만요.

답변3

과거에는 원하는 대부분의 작업을 수행하기 위해 mod_macro를 사용했지만 지금은 구성 관리를 사용합니다(내 경우에는 puppet이지만 누구라도 이 작업을 수행할 수 있어야 합니다). 그런 다음 고급 스크립트 언어를 사용하여 구성을 구축할 수 있습니다.

Puppet을 위한 매개변수화된 Apache 가상 호스트 모듈의 예가 많이 있습니다.

따라서 이미 구성 관리를 사용하고 있거나 사용을 고려하고 있다면 그렇게 하고, 그렇지 않으면 mod_macro를 살펴보십시오.

http://people.apache.org/~fabien/mod_macro/

관련 정보