AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 505391
Accepted
TrueDuality
TrueDuality
Asked: 2013-05-07 08:45:03 +0800 CST2013-05-07 08:45:03 +0800 CST 2013-05-07 08:45:03 +0800 CST

将 Apache2 SSL 设置为反向代理

  • 772

我有一个 Web 应用程序可以处理需要更公开地公开的潜在敏感信息。不幸的是,它有自己的内置不支持 SSL 的专有网络服务器。由于软件审批过程,我不得不使用 Apache 作为反向代理。

我几乎完全可以正常工作,直接通过 SSL 访问任何页面都可以正常工作,但是网络服务器发送的重定向不会被重写。例如,当您未登录时尝试访问根 URL https://frontend.example.tld:4000/应该将您重定向到https://frontend.example.tld:4000/login但它会重定向到http: //frontend.example.tld:4000/login导致 BadRequest。

我在这方面所做的所有谷歌搜索都揭示了 apache2 中似乎不再可用的过时设置,建议更改代理后面的应用程序来处理它(不幸的是,这不是一个选项)。

这是我的 apache 配置的相关部分:

<IfModule mod_ssl.c>
  Listen 4000

  <VirtualHost *:4000>
    ServerAdmin webmaster@localhost
    ServerName frontend.example.tld

    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
    CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel info

    SSLProtocol -ALL +SSLv3 +TLSv1
    SSLCipherSuite ALL:!ADH:!EXPORT56:!EXP:!eNULL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:!LOW:!SSLv2

    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/frontend.crt
    SSLCertificateKeyFile /etc/ssl/private/frontend.key
    SSLCertificateChainFile  /etc/ssl/certs/gd_bundle.crt

    BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    ProxyRequests Off
    ProxyPreserveHost On

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
  </VirtualHost>
</IfModule> 

在其他地方我加载了 proxy 和 proxy_http 模块。

更新:

以下是尝试重定向后收到的错误消息的内容:

错误的请求

您的浏览器发送了该服务器无法理解的请求。原因:您正在向启用 SSL 的服务器端口发送纯 HTTP。请改为使用 HTTPS 方案访问此 URL。提示: https://frontend.example.tld/

apache-2.2
  • 2 2 个回答
  • 5184 Views

2 个回答

  • Voted
  1. Best Answer
    Shane Madden
    2013-05-07T12:26:59+08:002013-05-07T12:26:59+08:00

    应用程序似乎正在Location根据传入标头的内容生成该标Host头,这正是我们想要的(并通过 实现ProxyPreserveHost),但它不知道新位置的正确协议。

    基于应用程序的工作方式,我们有几个选项来处理这个问题:

    1. 转身ProxyPreserveHost Off看看是否有帮助;生成的Location标头应与您现有的标头相匹配ProxyPassReverse,并相应地修改为正确的 URL,或者如果这不起作用;
    2. 添加一个新ProxyPassReverse行(也保留旧行)以尝试匹配和更改Location应用程序正在发送的标头。

      ProxyPassReverse / http://frontend.example.tld:4000/
      
    • 1
  2. Marcel
    2013-05-07T10:37:49+08:002013-05-07T10:37:49+08:00

    我遇到了类似的问题,我的配置中缺少以下几行,它为我解决了:

        SSLProxyEngine          On
        SSLProxyVerify          none
        SSLProxyCheckPeerCN     off
    

    将这些行放在SSLEngine On.

    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve