하위 디렉터리마다 가상 호스트(Apache)가 다릅니다.

하위 디렉터리마다 가상 호스트(Apache)가 다릅니다.

150명의 사용자를 위한 웹페이지를 호스팅하고 싶습니다. 각 사용자는 URL을 통해 고유한 웹페이지를 갖게 됩니다 url/username/index.html. 여기사용자 이름모든 사용자에게 고유하며 다른 모든 것은 보편적입니다.

그러면 Apache Server에 150개의 가상 호스트를 만들어야 합니까, 아니면 다른 방법이 있습니까?

답변1

사용자별 웹 디렉터리를 활성화할 수 있습니다.mod_user 디렉토리어느 지도

http://example.com/~username/index.html

해당 파일에

/home/username/public_html/index.html

기본값은 사용자 디렉터리입니다.

물결표를 제거하려면 Apache의 다시 쓰기 엔진을 사용하고 es로 시작하는 모든 URL에 대한 액세스를 비활성화하고 es를 ~사용하여 Alias개별 경로를 사용자 디렉터리에 매핑할 수 있습니다.

VirtualHost 구성에 다음을 추가하세요.

RewriteEngine On
# forbid URLs starting with /~
RewriteRule ^/~  -  [F]

# map individual paths to user dirs
Alias /bart    /home/bart/public_html
Alias /homer   /home/homer/public_html
Alias /lisa    /home/lisa/public_html
Alias /maggie  /home/maggie/public_html
# ...

es 에서 파일을 제공할 필요가 없으면 150 es 대신 DocumentRoot1을 사용할 수 있습니다 .AliasMatchAlias

# map all paths to user dirs
AliasMatch ^/([^/]+)(/.*)?$  /home/$1/public_html$2

활성화해야 하며 서버에서 mod_userdirDebian에서는 재부팅하여 이 작업을 수행할 수 있습니다.mod_rewritea2enmod

sudo a2enmod userdir rewrite
sudo service apache2 restart

답변2

이를 구별하려면 다른 호스트 이름(또는 포트)이 필요하기 때문에 가상 호스트로는 이를 수행할 수도 없습니다.

이는 다양한 사용자를 위한 하위 디렉터리가 있는 하나의 호스트일 뿐입니다. 따라서 각 하위 디렉터리에 대해 서로 다른 파일 권한을 설정해야 할 수도 있습니다(또는 최소한 그렇게 하려고 할 수도 있습니다).

관련 정보