我在本地计算机上安装了 Foswiki http://<localcomputer>:<localport>/foswiki
:。
多年来它一直运行良好。这台计算机无法通过互联网访问。现在我想通过反向 Apache2 代理从互联网访问它。因此我有一个域名:foswiki.<mydomain.com>
。在代理服务器上我有:
<VirtualHost *:443>
ServerName foswiki.<mydomain.com>
some SSL stuff
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests On
ProxyPreserveHost On
ProxyPass / http://<localcomputer>:<localport>/foswiki/
ProxyPassReverse / http://<localcomputer>:<localport>/foswiki/
</VirtualHost>
使用外部计算机上的链接:https://foswiki.<mydomain.com>
,我可以看到首页上的文字,但布局不正确。徽标未显示。我尝试了很多方法,但还没有找到正确的方法......
外部链接是 https。本地链接是 http。在源代码中,如外部 https 链接所示,有一些href="http://foswiki.<mydomain.com>/foswiki/bin/../pub/*"
。请注意 http 而不是 https。这些 http:// 不起作用。
同一代理服务器的其他代理运行正常。它们重定向到 Foswiki 安装以外的其他计算机。
我错过了什么?
编辑:杰拉尔德给了我让代理与 Foswiki 一起工作的答案。见下文。
现在,我又遇到了一个问题。但我尝试自己解决这个问题。
答案1
Foswiki 有一个反向代理使用的文档。
- Foswiki 将检测
X-Forwarded-Host
标头并从此标头设置{DefaultUrlHost}
。它仅在单个代理在线时才有效。多个代理跳转将破坏配置。 - 如果 SSL 在代理处终止,Foswiki 将不会检测
https://
该协议。通过在初始连接中添加“?SSL=1”来覆盖此问题:https://mynewsite.com/Main/WebHome?SSL=1
- 设置
{DefaultUrlHost}
为protocol://hostname
用户联系代理所使用的。 - 设置
{ForceDefaultUrlHost}
1
- 设置
{Sessions}{UseIPMatching}
0
所以:
tools/configure -save -set {DefaultUrlHost}='https://foswiki.<mydomain.com>'
tools/configure -save -set {ForceDefaultUrlHost}=1
tools/configure -save -set {Sessions}{UseIPMatching}=0
并添加?SSL=1
到您的ProxyPass
指令中。