새로운 Ubuntu 22.04 가상 머신에서 Apache를 역방향 프록시로 설정하려고 합니다. Ubuntu 18.04에는 모든 것이 의도한 대로 작동하는 기존 Apache 역방향 프록시가 있습니다. 이 새로운 역방향 프록시는 이전 역방향 프록시를 대체하기로 되어 있지만 가상 호스트가 제대로 작동하지 않는 것 같습니다.
나는 다음을 수행했습니다.
apt-get update
apt-get upgrade
apt-get install apache2
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
사이트 활성화에서 기본 페이지를 비활성화했습니다.
a2dissite 000-default.conf
그런 다음 새 가상 호스트를 만들고 활성화했습니다.
vi 001-trupage.azmedien.ch.conf
a2ensite 001-trupage.azmedien.ch.conf
다음과 같습니다:
<VirtualHost trupage.azmedien.ch:80>
ServerName trupage.azmedien.ch
ProxyPreserveHost On
ProxyPass / http://10.200.0.130/
ProxyPassReverse / http://10.200.0.130/
</VirtualHost>
그런 다음 Apache를 다시 시작하고 다시로드했습니다.
systemctl restart apache2
systemctl reload apache2
이 기본 구성이 작동하는지 테스트하기 위해 Windows PC에 호스트 파일 항목을 만들었습니다. 이 항목은 내 Apache 서버를 가리킵니다.
그런 다음 trupage.azmedien.ch에 접근하려고 하면 실제로 올바른 서버(가상 호스트에서 ProxyPass로 정의됨)로 리디렉션되는 대신 Apache 기본 웹 사이트로 연결됩니다.
무슨 이유에서인지 가상호스트를 인식하지 못하는 것 같은데요? "trupage.azmedien.ch:80"을 "*:80"으로 바꾼 다음 브라우저에서 열면 ProxyPass가 작동합니다. 그러나 분명히 여러 개의 가상 호스트가 있기 때문에 그것은 내가 원하는 것이 아닙니다.
<VirtualHost *:80>
ServerName trupage.azmedien.ch
ProxyPreserveHost On
ProxyPass / http://10.200.0.130/
ProxyPassReverse / http://10.200.0.130/
</VirtualHost>
다음은 213.146.11.131의 출력입니다 apache2ctl -S
. 이전 역방향 프록시의 IP이지만 IP가 어디서 왔는지, 여기에 표시되는 이유는 전혀 알 수 없습니다.
root@azprox10:~# apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified doma in name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress th is message
VirtualHost configuration:
213.146.11.131:80 is a NameVirtualHost
default server localhost (/etc/apache2/sites-enabled/001-trupage.azmedi
en.ch.conf:1)
port 80 namevhost localhost (/etc/apache2/sites-enabled/001-trupage.azm
edien.ch.conf:1)
port 80 namevhost opvsg.chmedia.ch (/etc/apache2/sites-enabled/002-opvs
g.chmedia.ch.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex rewrite-map: using_defaults
Mutex proxy: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
답변1
줄 에 DNS 이름이 필요하지 않습니다 <VirtualHost>
. <VirtualHost *:80>
괜찮습니다. 여러 개를 가질 수 있으며 관련 지시문이 있습니다 ServerName
.
해당 줄 의 항목은 <VirtualHost>
Apache가 수신해야 하는 인터페이스만 정의합니다. 여기에 호스트 이름을 입력하면 Apache는 올바른 인터페이스를 찾기 위해 이를 IP 주소로 확인하려고 시도합니다.