it-swarm-ko.tech

Apache가 AJP와 함께 HTTPS를 사용하도록 강제하는 방법은 무엇입니까?

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.

5
Matt Solnit

내가 올바르게 이해한다면 모든 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>
9
Dave Cheney

이 구문은 호스트와 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]
5
Mauricio Sánchez

그러나 문제를 해결하려면 SSL 전용 위치에 SSLRequireSSL 지시문을 넣는 것이 좋습니다. 이렇게하면 프로세스 후반에 구성 오류가 발생하면 SSL이 아닌 연결을 통해 아무것도 노출되지 않습니다.

2
CK.

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>
2
feniix