Apache2.4 RewriteRule을 원격 Apache2.2 서버에 대한 프록시로 사용

Apache2.4 RewriteRule을 원격 Apache2.2 서버에 대한 프록시로 사용

https://www2.devDocApp.com/ 우리는 URL이 실행 Ubuntu8되고 apache2.2TLS 1.2를 지원하지 않는 레거시 애플리케이션을 가지고 있습니다 . Ubuntu 8 상자에서 업그레이드 및 openSSL을 사용하는 데 어려움을 겪었으므로 이제 프록시 서버( Apache/2.4.29(Win64)가 포함된 Windows 2012 VM)를 apache2.2사용하고 있습니다. ) 모든 요청을 다음으로 리디렉션합니다.apachedevapp01https://www2.devDocApp.com/

다음은 프록시 서버를 설정하는 데 사용한 아파치 구성입니다.devapp01

<VirtualHost *:443>
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" 
DocumentRoot "C:/apache/htdocs"
ServerName  devapp01    
#ErrorLog "|bin/rotatelogs.exe -l -f C:/apache/logs/apache_error_log.%m-%d-%y-%I-%M-%S.log 86400"
#TransferLog "|bin/rotatelogs.exe -l -f C:/apache/logs/apache_transfer_log.%m-%d-%y-%I-%M-%S.log 86400"

SSLEngine on

#SSLProtocol -ALL +TLSv1 +TLSv1.1 +TLSv1.2 
#SSLHonorCipherOrder on
#SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
#SSLCompression off

SSLProtocol -ALL TLSv1.2
SSLCertificateFile "C:/apache/conf/server.cer"
SSLCertificateKeyFile "C:/apache/conf/server.key"
#SSLCertificateChainFile "C:/apache/conf/server-ca.cer"
SSLCACertificateFile "C:/apache/conf/ca.cer"
SSLVerifyClient optional
SSLVerifyDepth  3

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "C:/apache/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

#CustomLog "|bin/rotatelogs.exe C:/apache/logs/ssl_request.%m-%d-%Y_%H_%M_%S.log 86400" \
#          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#ProxyPass should be prior to any other Proxy directives
ProxyPass   /DocApp https://www2.devDocApp.com/ 
SSLProxyEngine on

RewriteEngine On        
RewriteRule  ^/DocApp$  https://www2.devDocApp.com/  [R,L]  

RequestHeader set X_SSL_CLIENT_M_SERIAL "%{SSL_CLIENT_M_SERIAL}s"
RequestHeader set X_FORWARDED_PROTO "https" env=HTTPS
RequestHeader set SslSubject "%{SSL_CLIENT_S_DN}s"

</VirtualHost>

https://devapp01/DocApp/브라우저에서 리디렉션되는 프록시 아파치 URL을 쳤을 때 브라우저의 URL이 리디렉션 대신 항상 모든 중첩 경로에 대해 https://www2.devDocApp.com/작동하도록 하려면 어떻게 해야 합니까 ? https://devapp01/DocApp/<Page>https://devapp01/DocApp/page1 https://devapp01/DocApp/page2/page1https://www2.devDocApp.com/page1https://www2.devDocApp.com/page2

답변1

다음은 리디렉션을 수행합니다.

RewriteEngine On        
RewriteRule  ^/DocApp$  https://www2.devDocApp.com/  [R,L]  

제거하세요. 이미 ProxyPass트릭을 수행하고 있습니다.

답변2

이런 식으로 프록시를 시도해야 합니다

RewriteEngine  on
RewriteRule    "^DocApp/(.*)$"  "https://www2.devDocApp.com/DocApp/$1"  [P]
ProxyPassReverse "/DocApp/" "http://www2.devDocApp.com/DocApp/"

백엔드에서 발행한 모든 리디렉션이 클라이언트에 올바르게 전달되도록 ProxyPassReverse 지시어를 추가합니다.

더 나은 정보는 여기에 있습니다: https://httpd.apache.org/docs/2.4/rewrite/proxy.html

관련 정보