使用 Apache 在 8980 端口上运行 SSL

问题描述

我有一个网络服务,我通过按原样输入以下 URL 来访问它(逐个字符):

http://10.115.252.127:8980/opennms/login.jsp

网站文件来自 /opt/opennms/jetty-webapps/opennms/

我的目标是使用 Apache (httpd.conf) 强制此 URL 的任何流量使用 SSL 而不是 HTTP。

  1. 我已成功安装 SSL 证书,没有出现任何问题。
  2. 我已经配置了一个 VirtualHost 指令来将端口 80 重定向到 443
  3. 只有 /var/www/html/* 下的网站才能成功重定向

示例:http://10.115.252.127/numbers 成功重定向https://10.115.252.127/numbers http://10.115.252.127/charts 成功重定向https://10.115.252.127/charts

但是,当我输入 URL http://10.115.252.127:8980/opennms/login.jsp 时,它总是作为 HTTP 使用...我如何使它像其他人一样作为 HTTPS 使用?我查看了论坛,所有帖子都假设您将始终重定向端口 80,并且在我解释的场景中没有提及如何使用 SSL。我在端口 3000 http://10.115.252.127:3000/login

上运行的另一个服务遇到了同样的问题

===从我的httpd.conf中提取====

<VirtualHost *:80>
ServerName 10.115.252.127
Redirect permanent / https://10.115.252.127/
</VirtualHost>


<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/httpd/conf/ssl.crt/cert_mtocb2500lbscorp.crt
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/mtocb2500-lbscorp.key
        ServerName 10.115.252.127
        #Documentroot /var/www/html
</VirtualHost>

解决方法

根据您对我的理解的确认,您可以执行以下操作:

############################################################################
Listen 80

# All connections on port 80 are redirected to port 443
<VirtualHost *:80>
    ServerName www.example.com
    CustomLog "logs/80_access.log" combined
    ErrorLog "logs/80_error.log"

    Redirect permanent / https://www.example.com
    
    # No documentRoot,no content
</VirtualHost>

############################################################################
Listen 443

# All URI are answered from the documentRoot directory
# EXCEPT /openms,which is proxied to :8980
<VirtualHost *:443>
    ServerName www.example.com

    # temporary,remove when tests done
    LogLevel debug
    CustomLog "logs/443_access.log" combined
    Errorlog "logs/443_error.log"

    SSLEngine on
    SSLCertificateFile /etc/httpd/conf/ssl.crt/cert_mtocb2500lbscorp.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/mtocb2500-lbscorp.key

    # For your redirection to 8980
    ProxyPass           /opennms    "https://www.example.com:8980/"
    ProxyPassReverse    /opennms    "https://www.example.com:8980/"

    documentRoot "/yourdir/apache/htdocs"
    DirectoryIndex index.html
</VirtualHost>

先决条件

  • 您必须加载代理模块
  • 您必须加载重写模块
  • 端口 8980 链接到其他一些软件。 Apache 不处理 8980。