JBoss에서 제공하는 특정 부분이있는 Apache 웹 사이트가 있습니다. 문제는 어떻게 Apache가 모든 HTTP 요청을 HTTPS에 해당하는 것으로 리디렉션하도록 할 수 있습니까?
이전 서버 (CentOS 4, Apache 2.0, mod_jk)에는 다음과 같은 구성이 있습니다.
<VirtualHost 1.2.3.4:80>
Redirect / https://www.foo.com/
</VirtualHost>
이것은 훌륭하게 작동합니다. PHP, Vanilla HTML 또는 JBoss 기반 웹 페이지에 대한 모든 요청은 리디렉션됩니다. 그러나 새 서버 (CentOS 5, Apache 2.2, mod_proxy_ajp)에서는 동일한 구성 만 이 Vanilla 페이지에 대해 작동합니다. AJP를 사용하는 JBoss.
나는 또한 http://www.webmasterworld.com/Apache/3050511.htm 에서 찾은 다음을 시도했습니다.
<Proxy *>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</Proxy>
그러나 여전히 운이 없습니다. 나는 분명한 것을 놓치고있는 것 같다. 도움이 필요하세요?
추신 저는 아파치 전문가가 아닙니다. 이것이 초보자 질문으로 밝혀지면 사과드립니다 :-P.
내가 올바르게 이해한다면 모든 http 요청을 https로 업그레이드하고 싶습니다. 이것이 맞다면 이것을 시도하십시오
<VirtualHost ip:80>
ServerName www.company.com
RedirectMatch permanent ^(.*)$ https://www.company.com$1
</VirtualHost>
<VirtualHost ip:443>
ServerName www.company.com
Include vhosts.d/includes/ssl.conf
# assumes you want to proxy everything on this vhost to jboss:8009
<Location / >
ProxyPass ajp://jboss:8009/
</Location>
</VirtualHost>
이 구문은 호스트와 URL을 동일하게 유지하면서 HTTPS로 리디렉션됩니다.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
때로는 디렉토리, 즉 관리 영역 만 리디렉션하고 싶을 때가 있습니다.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/admin(|/.*)$ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
그러나 문제를 해결하려면 SSL 전용 위치에 SSLRequireSSL 지시문을 넣는 것이 좋습니다. 이렇게하면 프로세스 후반에 구성 오류가 발생하면 SSL이 아닌 연결을 통해 아무것도 노출되지 않습니다.
SSL 리디렉션을위한보다 효율적인 구문은 Apache env var HTTPS를 사용하는 것입니다.
당신은 이것을 좋아합니다 :
호스트 재 작성
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://yourhost.com%{REQUEST_URI} [R,L]
호스트 재 작성없이
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R,L]
Mod_jk 대 Apache2.2 ajp 프록시와 관련하여 정적 및 동적 콘텐츠를 분리해야 할 때 JkMount 및 JkUnMount가 유용하다고 생각하기 때문에 mod_jk를 사용합니다. 내 구성을 구성하는 방법은 SSL을 포함하는 조건부입니다. 그래서 나는 각 호스트에 대해 하나의 httpd.conf를 가지고 있으며 각 conf에 대한 디렉토리가 다음과 같이 포함됩니다.
/etc/httpd/test_conf.httdp.conf :
SeverName test.com
ServerRoot /etc/httpd
LoadModule jk_module modules/mod_jk.so
LoadModule ssl_module/mod_ssl.so
(snip)
Include conf/test_com/*.conf
/etc/httpd/test_conf/mod_jk.conf
<IfModule jk_module>
JkWorkersFile conf/test_conf/workers.properties
JkLogFile logs/test_conf/mod_jk.log
JkLogLevel error
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkRequestLogFormat "%w %V %T"
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(PUT|DELETE|TRACK|OPTIONS|TRACE)
RewriteRule .* - [F]
JkMount /* loadbalancer
JkUnMount /error* loadbalancer
JkShmFile run/jk.shm
<Location /jkstatus/>
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
</IfModule>
/etc/httpd/conf/test_conf/workers.properties
worker.list=loadbalancer,status
worker.node1.port=8009
worker.node1.Host=192.168.1.100
worker.node1.type=ajp13
worker.node1.lbfactor=2
worker.node1.ping_mode=A
worker.node1.connect_timeout=10000
worker.node1.prepost_timeout=10000
worker.node1.socket_timeout=90
worker.node1.connection_pool_timeout=600
worker.node1.method=R
worker.node1.fail_on_status=500,501,502,503
worker.node2.reference=worker.node1
worker.node2.Host=192.168.1.200
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=true
worker.status.type=status
/etc/httpd/conf/test_conf/httpd-ssl.conf
<IfModule ssl_module>
Listen 192.200.10.100:443
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R,L]
(snip)
<VirtualHost 192.200.10.100:443>
DocumentRoot "/var/www/test.com/htdocs"
ServerName test.com
(snip)
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA
SSLCertificateFile "conf/test_conf/ssl/test_com.crt"
SSLCertificateKeyFile "conf/test_conf/ssl/test_com.key"
SSLCACertificateFile "conf/test_conf/ssl/VerisignIntermediate.crt"
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
JkMount /* loadbalancer
JkUnMount /error* loadbalancer
JkStripSession On
</VirtualHost>
</IfModule>