모두 * (와일드 카드) 캐치 별명을 사용하는 동안 Apache2 serverAlias에서 특정 도메인 제외


10

사용자 지정 도메인을 지원해야하는 웹 응용 프로그램이 있습니다. 이와 관련하여 다음 이름 기반 가상 서버를 설정했습니다.

<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    RackEnv production
    DocumentRoot /srv/www/example/current/public
    <Directory /srv/www/example/current/public>
             AllowOverride all
             Options -MultiViews FollowSymLinks
    </Directory>
    ErrorLog /srv/www/example/log/error.log
    TransferLog /srv/www/example/log/access.log
</VirtualHost>

서버 별명으로 *를 알 수 있습니까? 해당 서버의 모든 도메인을 잡습니다. 그러나이 서버 에이 목록에서 제외하려는 다른 사이트가 있습니다. 이 서비스에서 사용자가 서버로 등록 할 수있는 모든 도메인을 수동으로 설정하는 것보다 제외 된 도메인 목록을 갖는 것이 더 경제적입니다.

아마도이 갈 수있는 가장 좋은 방법은 아니지만, 다른 허용하면서 나는 어떤 도메인을 잡을 수있는 웹 응용 프로그램을 설정하는 가장 좋은 (비교적 간단한) 방법으로 도움을 찾고 있어요 특정의 다른 응용 프로그램에 라우팅 할 도메인을 .

답변:


12

Apache는 도메인이 정의 된 순서대로 일치를 검색합니다. 문제를 올바르게 이해하면 모든 호스트를 잡기 전에 호스트가 제외되도록 정의하여 해결할 수 있습니다.

<VirtualHost *:80>
    ServerName excluded.example.com
    ServerAlias  something.example.com ...
    ...
</VirtualHost>
<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    ...
</VirtualHost>

1
예, 그렇습니다.하지만 기본 우분투 10.4 스택 에서이 작업을 수행하는 방법에 대해 의아해합니다. 여기서 전체 사용 가능한 사이트는 사이트에서 사용 가능하고 사이트에서 사용 가능한 디렉토리를 사용하여 관리되며 각 가상 호스트 정의는 자체 독점적으로 존재합니다 파일 ...이 경우 순서를 어떻게 제어합니까?
Victor S

파일은 알파벳 순서로로드됩니다 (ls의 기본 정렬 순서).
user9517

1
사이트 정의가 먼저 필요한 000-excluded.example.com.conf경우 sites-available dir 과 같은 이름을 지정하십시오 .
Brian Minton

나는 똑같은 일을하고 싶었지만 이것이 효과가 없습니다. "ServerName excluded.example.com \ n Redirect /example.com/excluded " 가있는 excluded.example.com VirtualHost로 인해보다 일반적인 VirtualHost에 대한 모든 요청이 재 지정되었습니다 (구성의 특정 VirtualHost를 따르십시오).
quuxman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.