네트워크에서 cPanel 메일 서버의 프런트 엔드 역할을 하는 서버가 있습니다. 프런트 엔드 서버의 Apache 프록시는 152일 동안 오류 없이 실행되었으나 이제 이를 사용하여 메일 서버의 웹 메일 클라이언트에 액세스할 때 갑자기 500/502 오류가 발생합니다.
프런트엔드 서버는 서명된 SSL 인증서를 사용하고, cPanel 서버는 자체 서명된 인증서를 사용합니다. 다음은 처음 발생하기 시작했을 때 프런트 엔드 서버에서 출력된 오류 로그입니다.
[Tue Sep 10 18:22:52.959291 2013] [proxy:error] [pid 19531] (502)Unknown error 502: [client 173.xx.xx.xx:9558] AH01084: pass request body failed to 184.xx.xx.xx:2096 (184.xx.xx.xx), referer: https://domain.com:2096/cpsess12385596/3rdparty/roundcube/?_task=mail&_refresh=1&_mbox=INBOX
[Tue Sep 10 18:22:52.959469 2013] [proxy:error] [pid 19531] [client 173.xx.xx.xx:9558] AH00898: Error during SSL Handshake with remote server returned by /cpsess12385596/3rdparty/roundcube/, referer: https://domain.com:2096/cpsess12385596/3rdparty/roundcube/?_task=mail&_refresh=1&_mbox=INBOX
프런트엔드 서버는 Apache/2.4.6 (Amazon)
이 서버의 프록시에 대한 My VirtualHost 설정을 실행하는 EC2 인스턴스입니다.
< VirtualHost *:2096> ServerName domain.com
SSLEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLCertificateFile /x/x/x/domain.com.crt
SSLCertificateKeyFile /x/x/x/domain.com.key
SSLCACertificateFile /x/x/x/domain.com.cabundle
ProxyPass / https://184.xx.xx.xx:2096/
ProxyPassReverse / https://184.xx.xx.xx:2096/
ProxyPassReverseCookieDomain 184.xx.xx.xx:2096 domain.com
ProxyPassReverseCookiePath / /
SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyHTMLURLMap https://184.xx.xx.xx:2096 /
< /VirtualHost>
프런트 엔드 서버에서 아무것도 변경되지 않았다고 생각할 수 있는 한 업데이트 등을 수행하지 않았습니다. 일단 이 문제를 발견하고 성공하지 못한 채 두 서버 모두에서 다시 시작을 시도했지만 이 문제를 해결하기 위해 아무 것도 하지 않았습니다.
어떤 제안이 있으십니까?
답변1
서버 버전: Apache/2.4.6에서 동일한 문제가 발생했습니다.
[1]의 문서에 따르면, "2.4.5 이상에서는 SSLProxyCheckPeerCN이 SSLProxyCheckPeerName으로 대체되었으며 해당 설정은 SSLProxyCheckPeerName off가 동시에 지정된 경우에만 고려됩니다.."
따라서 다음 항목을 추가하면 트릭이 수행됩니다.
SSLProxyCheckPeerName 꺼짐
그래서 내 작업 구성은 다음과 같습니다 ...
ProxyRequests Off
SSLEngine On
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLCertificateFile /x/x/keys/server.crt
SSLCertificateKeyFile /x/x/keys/server.key
답변2
백엔드 서버가 오래된 자체 서명 인증서를 사용하는 경우 옵션이 하나 더 필요합니다(백엔드 서버에 액세스할 수 없는 경우).
SSLProxyCheckPeerExpire off
답변3
나도 같은 오류가 발생하지만 내 경우에는 여기에 허용된 답변으로 이 오류가 해결되었습니다.https://stackoverflow.com/questions/47718508/apache-proxypass-https-and-remote-server-with-sni
나는 추가했다
ProxyAddHeaders off
ProxyPreserveHost off
답변4
인증서 파일이 업데이트되었는지 여부가 감지되지 않는 경우 인증서를 갱신한 후 백엔드 서버를 다시 시작하는 것을 잊지 마십시오. 따라서 지시어를 설정할 필요가 없습니다 SSLProxyCheckPeerExpire off
.