다음 구성을 수행할 때 흥미로운 질문이 머리 속에 떠올랐습니다(이름과 IP는 가상입니다).
배경:
route 1 - 10.10.10.10 is an IPSec tunnel
route 2 - 20.20.20.20 to the Internet
original service URL (nginx) - https://testscb.com - work
Virtual apache server (another machine, not mine) DNS - testscb.local.com
기본 경로 1을 사용할 수 없는 경우 모든 트래픽이 경로 2로 이동하는지 확인하고 싶습니다. 통신 채널이 복원되면 경로 1로 돌아갑니다.
내 설정:
/etc/호스트
10.10.10.10 testw1.com testscb1.com
20.20.20.20 testw2.com testscb2.com
포트 443이 열려 있습니다.
traceroute to testscb1.com (10.10.10.10), 30 hops max, 60 byte packets
7 testscb1.com (10.10.10.10) 2.955 ms 2.985 ms 2.839 ms
traceroute to testscb2.com (20.20.20.20), 30 hops max, 60 byte packets
4 testscb2.com (20.20.20.20) 1.731 ms 1.834 ms 2.244 ms
/etc/httpd/virtual_host/testscb.conf
<VirtualHost *:80>
ServerName testscb.local.com
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
#ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
# BalanceMember in /etc/hosts
<Proxy "balancer://testscb">
BalancerMember https://testscb1.com hcmethod=HEAD hcexpr=ok234 hcinterval=20 hcuri=/test hcfails=4 hcpasses=4
BalancerMember https://testscb2.com hcmethod=HEAD hcexpr=ok234 hcinterval=20 hcuri=/test hcfails=4 hcpasses=4 status=+H
ProxySet stickysession=JSESSIONID
ProxySet lbmethod=heartbeat
</Proxy>
ProxyPass "/" "balancer://testscb/"
ProxyPassReverse "/" "balancer://testscb/"
<Location "/">
ProxyPass "https://testscb.com/"
ProxyPassReverse "https://testscb.com/"
AllowOverride None
Order Deny,Allow
Deny from All
Allow from All
</Location>
LogLevel debug
ErrorLog /var/log/httpd/testscb-error_log
CustomLog /var/log/httpd/testscb-access_log combined
</VirtualHost>
아파치 우아한
httpd.service 활성: 활성(실행 중)
시험: 나는 아파치 서버에서 컬을 사용합니다.
* Mark bundle as not supporting multiuse
<
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
* Connection #0 to host testscb1.com left intact
* Mark bundle as not supporting multiuse
<
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
* Connection #0 to host testscb2.com left intact
컬을 사용하는 tcpdump는 교환이 진행 중임을 확인합니다.
내 컴퓨터에서 컬을 통해 요청을 보냅니다.
* Mark bundle as not supporting multiuse
<
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
* Connection #0 to host testscb.local.com left intact
하지만 경로 2가 사용되는 것으로 나타났습니다. 백업으로 사용해야 하지만(tcpdump 참조).
더욱 흥미롭습니다. 통신 링크 실패를 테스트하기 위해 경로를 반대로 바꾸고 있습니다.
ip ro add 20.20.20.20 via 127.0.0.1
이제 컬 -v -khttps://testscb2.com/"포트 443: 연결 시간 초과" 오류가 발생합니다.
내 컴퓨터에서 요청을 보낼 때 컬 -v -khttp://testscb.local.com/
또한 "포트 443: 연결 시간이 초과되었습니다"라는 메시지가 표시됩니다.
루트 2가 왜 포함되어 있는지 이해가 되지 않습니다. 아파치에는 루트 1이 존재하지 않는 것 같습니다.
귀하의 조언에 매우 감사하겠습니다. 감사해요.