Atlassian Confluence를 호스팅하는 다른 서버에 대해 Apache v2.4 httpd 역방향 프록시를 설정하고 있습니다.
프록시의 개인 IP 주소는 10.0.0.77이고, 공용 IP 주소는 77.77.77.77이며, DNS A 레코드는 공용 IP를 여기에 매핑합니다 confluence.example.com
.
NAT가 있습니다.
- 77.77.77.77:10080 -> 10.0.0.77:80
- 77.77.77.77:10443 -> 10.0.0.77:443
이는 프록시의 공용 IP 주소가 다른 서비스에도 사용되기 때문에 필요합니다.
프록시의 이름 확인은 Confluence 서버의 개인 IP 10.0.0.9에 /etc/hosts
매핑되는 를 통해 수행됩니다.confluence.example.com
이는 다음과 같습니다 /etc/httpd/conf.d/confluence.conf
(보시다시피 HTTP에서 HTTPS로 리디렉션도 수행합니다).
<VirtualHost *:80>
ServerName confluence.example.com
ProxyRequests off
ProxyPreserveHost off
SetEnv force-proxy-request 1
SetEnv proxy-nokeepalive 1
ProxyPass "/" "http://confluence.example.com:8090/"
ProxyPassReverse "/" "http://confluence.example.com:8090/"
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
ServerName confluence.example.com
ServerSignature On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder on
# SSL cipher suite shortened for clarity
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384"
SSLCertificateFile /etc/httpd/ssl/example.crt
SSLCertificateKeyFile /etc/httpd/ssl/example.key
SSLCACertificateFile /etc/httpd/ssl/example.crt
ProxyRequests off
ProxyPreserveHost on
ProxyPass "/" "http://confluence.example.com:8090/"
ProxyPassReverse "/" "http://confluence.example.com:8090/"
</VirtualHost>
방문할 때http://confluence.example.com:10080(심지어http://77.77.77.77:10080) 브라우저에서 URL을 다음으로 변경합니다.https://confluence.example.com:10080그러나 Confluence 로그인 페이지가 표시되지 않고 대신 다음 오류가 반환됩니다.
보안 연결 실패
77.77.77.77:10080에 연결하는 중 오류가 발생했습니다. SSL이 허용된 최대 길이를 초과하는 레코드를 수신했습니다. 오류 코드: SSL_ERROR_RX_RECORD_TOO_LONG
http 액세스 로그(DEBUG 수준)에 기록되는 내용은 다음과 같습니다.
33.33.33.33 - - [17/Sep/2018:17:06:59 +0200] "GET / HTTP/1.1" 302 208 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0"
33.33.33.33 - - [17/Sep/2018:17:06:59 +0200] "\x16\x03\x01\x02" 400 226 "-" "-"
그리고 http 오류 로그:
[Mon Sep 17 17:11:58.095085 2018] [core:debug] [pid 23120] protocol.c(1271): [client 33.33.33.33:49745] AH00566: request failed: malformed request line
별도의 https 액세스 및 오류 로그를 설정했는데 아무 것도 기록되지 않습니다. 짐작하셨겠지만 33.33.33.33은 제가 나가는 공용 IP입니다.
입장https://confluence.example.com:10443잘 작동합니다.
동일한 구성이 다른 Apache v2.2 역방향 프록시에서도 작동합니다.
어떤 팁이 있나요?
답변1
Tomcat 인스턴스에 대해 이 작업을 수행합니다. (이전에는 Confluence, 현재는 XWiki입니다.)
- http → https vHost는 프록시 없이 직접 리디렉션됩니다.
- https vHost는 URI에 합리적인 패턴이 있다는 것을 알고 있으므로 Tomcat의 프록시 재작성을 관리합니다.
내 구성의 (약간) 편집된 버전은 다음과 같습니다.
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName confluence.example.com
DocumentRoot /home/www/confluence.example.com/docroot
# Global protection
#
<Directory />
Options none
AllowOverride None
</Directory>
# Send users to canonical website
#
Redirect / https://confluence.example.com/
# Logging
#
ServerSignature On
LogLevel warn
ErrorLog "|/usr/bin/cronolog /home/www/confluence.example.com/logs/%Y/%m/%d/public-error.log"
CustomLog "|/usr/bin/cronolog /home/www/confluence.example.com/logs/%Y/%m/%d/public-access.log" combined
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName confluence.example.com
DocumentRoot /home/www/confluence.example.com/docroot
AddDefaultCharset UTF-8
# Global protection
#
<Directory />
Options none
AllowOverride None
</Directory>
# Access to the application itself
#
ProxyPassMatch /(.*) http://confluence.example.com:8090/$1
ProxyPassReverse / http://confluence.example.com:8090/
ProxyPassReverseCookieDomain confluence.example.com confluence.example.com
# Logging
#
ServerSignature On
LogLevel warn rewrite:debug
ErrorLog "|/usr/bin/cronolog /home/www/confluence.example.com/logs/%Y/%m/%d/secure-error.log"
CustomLog "|/usr/bin/cronolog /home/www/confluence.example.com/logs/%Y/%m/%d/secure-access.log" combined
#RewriteLogLevel 1
#RewriteLog "|/usr/bin/cronolog /home/www/confluence.example.com/logs/%Y/%m/%d/secure-rewrite.log"
# SSL
#
SSLEngine on
SSLCertificateFile "...crt"
SSLCertificateKeyFile "...key"
SSLCertificateChainFile "...ca-bundle"
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>