Apache VirtualHost가 작동하지 않거나 리디렉션되지 않습니까? (역방향 프록시)

Apache VirtualHost가 작동하지 않거나 리디렉션되지 않습니까? (역방향 프록시)

새로운 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 주소로 확인하려고 시도합니다.

관련 정보