如何强制 Apache 将 HTTPS 与 AJP 结合使用?

Mat*_*nit 5 ssl tomcat https apache-2.2

我们有一个 Apache 网站,其中某些部分由 JBoss 提供支持。问题是,我们如何让 Apache 强制将所有 HTTP 请求重定向到 HTTPS 等效项?

在我们的旧服务器(CentOS 4、Apache 2.0、mod_jk)上,我们有以下配置:

<VirtualHost 1.2.3.4:80>
Redirect / https://www.foo.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这很好用——任何对 PHP、vanilla HTML 或 JBoss 驱动的网页的请求都会被重定向。但是,在我们的新服务器(CentOS 5、Apache 2.2、mod_proxy_ajp)上,相同的配置适用于普通页面——不适用于使用 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>
Run Code Online (Sandbox Code Playgroud)

但仍然没有运气。我觉得我错过了一些明显的东西。有什么帮助吗?

PS我无论如何都不是Apache专家。如果这是一个初学者问题,我深表歉意:-P。

Dav*_*ney 9

如果我理解正确,您想将所有 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>
Run Code Online (Sandbox Code Playgroud)


小智 5

此语法将重定向到 HTTPS,保持主机和 URL 相同:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)

有时您只想重定向目录,即管理区域:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/admin(|/.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)