【问题标题】:Mojolicious url_for operation insecure in webserviceMojolicious url_for web 服务中的操作不安全
【发布时间】:2020-03-10 03:29:50
【问题描述】:
【问题讨论】:
标签:
apache
perl
mojolicious
mojolicious-lite
【解决方案1】:
我是这样解决的:apache 代理 必须有一些特定的设置,并且 mojo 应用程序必须处于 反向代理 模式。
Apache 设置
Apache 必须知道如何代理 Web 服务,并且它必须告诉 mojo 转发协议。
- 我把我所有的网络服务放在 /ws/ 下,并将它添加到 ProxyPass
- 我的 mojo 应用程序位于同一主机的 8080 端口,因此我代理到 localhost:8080。
- 设置X-Forwarded-Proto非常重要
在 /etc/apache2/sites-enabled/default-ssl.conf 我改变了这种方式:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /ws/ ws://localhost:8080/ws/ keepalive=On
ProxyPass / http://localhost:8080/ keepalive=On
ProxyPassReverse / http://localhost:8081/
RequestHeader set X-Forwarded-Proto "https"
Mojo 代理
mojolicious 应用必须知道它处于反向代理中。如果您使用的是 hypnotoad,则可能没有必要。当我使用 morbo 进行一些测试时,我必须以这种方式运行它:
MOJO_REVERSE_PROXY=1 morbo script.pl
https://mojolicious.org/perldoc/Mojolicious/Guides/Cookbook#Reverse-proxy 有更多文档