VHOST 서버로 구성된 LAMP 서버가 있습니다. 여기서 문제는 동일한 LAN을 통해 접속하려고 하면 VHOST 주소가 아닌 로컬 IP 주소로 접속을 시도하는 것 같습니다. 그런데 외부에서 서버에 접속하려고 하면 올바른 VHOST가 표시됩니다. 기본 사이트가 아닌 올바른 사이트를 제공하도록 Apache를 구성해야 합니다. 어떻게 해야 하나요?
다음은 내 VHOST 항목 중 두 가지의 예입니다.
기본
<VirtualHost *:80>
ServerAdmin [email]
ServerName eresk.fi
DocumentRoot /home/web/apache-webserver/public_html/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/web/apache-webserver/public_html/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /home/web/apache-webserver/cgi-bin/
<Directory "/home/web/apache-webserver/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
다른 사이트
<VirtualHost *:80>
ServerAdmin [email]
ServerName diggety.net
ServerAlias *.diggety.net
DocumentRoot /home/web/diggety/public_html/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/web/diggety/public_html/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /home/web/diggety/cgi-bin/
<Directory "/home/web/diggety/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
<IfModule php5_mod.c>
php_value session.gc_maxlifetime 604800
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/error_diggety.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access_diggety.log combined
</VirtualHost>
답변1
이것은 아파치의 잘못이 아닙니다. VirtualHost 지시어는 IP를 통한 요청에는 작동하지 않습니다. 사이트에 액세스하는 LAN의 컴퓨터는 DNS 서버를 확인하고 결과적으로 외부 IP를 얻습니다. 서버가 동일한 네트워크에 있는 경우 네트워크의 적절한 라우터가 이를 올바르게 해결/라우팅해야 하지만 일부 라우터의 경우 항상 그런 것은 아닙니다.
이를 테스트하려면 클라이언트에서 도메인을 서버의 내부 IP에 매핑하는 사용자 지정 DNS 항목을 추가하세요. /etc/hosts
클라이언트가 Linux인지 또는 클라이언트가 Windows인지 편집 C:\Windows\system32\drivers\etc\hosts
하고 다음을 추가합니다(서버의 내부 IP로 10.0.0.1 변경).
10.0.0.1 domain.com
업데이트: DNS를 사용한 솔루션이 작동하는 경우 사용자 지정 DNS 항목을 설정할 수 있도록 내부 네트워크에 사용자 지정 DNS 서버를 구성할 수 있습니다. 이렇게 하면 클라이언트에서 수동으로 설정할 필요가 없습니다.