【发布时间】:2016-11-16 16:18:27
【问题描述】:
我正在尝试在 Apache 代理后面运行 Reagent Web 应用程序,以将 HTTPS 转发到在其后面运行 Reagent 应用程序的 HTTP Jetty 服务器。以下是 Apache 规则:
ProxyPass /bookmarx http://localhost:3000
ProxyPassReverse /bookmarx http://localhost:3000
当我在本地运行应用程序时,它运行良好,即 http://localhost:3000。但是,当我通过 Apache 服务器运行应用程序时,例如https://example.com/bookmarx,它只是返回 HTML 起始页(即下面带有代码 sn-p 的那个)并且不执行 Javascript(核心/初始化!)所以我看到的只是一个空白页。
<div id="app"></div>
<script src="js/app.js" type="text/javascript"></script>
有趣的是,我可以调用它背后的 Clojure 服务,例如https://example.com/bookmarx/api/bookmarks 它返回书签,所以我知道代理正在转发请求但 ClojureScript 没有运行。
我玩弄了重写规则和 x-forwarded-proto 标头,但这似乎没有任何区别。
如果我将 Apache 服务器配置为使用 HTTP 而不是 HTTPS 运行它,我也会得到相同的结果,所以我知道这不是 SSL 干扰。
我需要做什么才能让应用通过代理运行?
【问题讨论】:
-
再想一想我开始怀疑我的问题是否与页面使用 core.async 调用服务器以在渲染之前加载书签这一事实有关。当我直接访问 localhost 码头服务器时,它会阻塞,直到返回结果。但是当我通过代理时,它不会阻塞并尝试在返回结果之前呈现页面。如果这确实是问题,我不确定如何解决这个问题。
标签: apache proxy jetty clojurescript reagent