Apache가 단일 <위치>를 통해 여러 디렉토리를 제공하도록하십시오.
-
21-08-2019 - |
문제
나는 많은 양의 가상 호스트를 제공하는 데 문제가 있으며보다 효율적인 일을하는 방법이 있는지 궁금합니다.
현재 위치 지침을 사용하여 여러 부서의 대량 프로젝트, 총 19 개의 부서에서 300 개가 넘는 프로젝트를 제공하고 있습니다. 구조는 파일이 제공되는 디렉토리를 제외하고 모든 위치 지침에 대해 동일합니다. 내가 현재 가지고있는 것은 다음과 같이 보이는 큰 파일입니다.
<VirtualHost *>
ServerName www.myserver.com
<Location /departmentA/project1>
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/departmentA/project1/passwords
Require valid-user
</Location>
<Location /departmentA/project2>
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/departmentA/project2/passwords
Require valid-user
</Location>
<Location /departmentB/project1>
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/departmentA/project1/passwords
Require valid-user
</Location>
</VirtualHost>
보시다시피 경로를 제외 하고이 모든 구조는 동일합니다. 내가 원하는 것은 물론 부서와 프로젝트 이름에 변수를 사용할 수 있고 단일 위치 지침을 유지할 수있는 것입니다. 나는 이것이 서버와 메모리에서도 덜 무겁다고 가정합니다.
<VirtualHost *>
ServerName www.myserver.com
<Location /$1/$2>
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/$1/$2/passwords
Require valid-user
</Location>
</VirtualHost>
해결책
나는 생각하지 않는 것처럼 구체적으로 할 수있는 방법을 모른다 AuthUserFile
역동적 인 논증을 받아들입니다. 선택한 언어로 작은 스크립트를 작성하는 것이 가장 쉬울 수 있습니다. <Location>
보호하려는 각 디렉토리에 대해 차단하고 반복합니다. 예를 들어, 파이썬에서 :
#!/usr/bin/python
import sys
print '<VirtualHost *:80>'
print ' ServerName www.myserver.com'
for path in sys.stdin:
print ' <Location /%s>' % path.strip()
print ' AuthType Basic'
print ' AuthName "By Invitation Only"'
print ' AuthUserFile /usr/local/%s/passwords' % path.strip()
print ' Require valid-user'
print ' </Location>'
print '</VirtualHost>'
'Departmenta/Project1'형식의 각 라인에 대해 표준 입력에 읽히면 해당하는 것을 인쇄합니다. <Location>
부분.
다른 팁
당신은 시도 했습니까? u003CLocationMatch>지령?
경로 대신 정규 표현이 필요합니다. 당신의 경로와 관련 하위 옵션에 따라 수백 개의 지침을보다 관리하기 쉬운 소수의 소수로 줄일 수 있습니다.
제휴하지 않습니다 StackOverflow