【问题标题】:Mojolicious url_for operation insecure in webserviceMojolicious url_for web 服务中的操作不安全
【发布时间】:2020-03-10 03:29:50
【问题描述】:

我正在尝试使用 Web 服务返回内容。如果因“操作不安全”而失败,则在 apache 代理后面。

我阅读了有关添加 apache 挂钩的信息,但它对我不起作用。也不设置环境变量。 这是我尝试过的:how to make Mojolicious's url_for()->to_abs() return correct scheme (http or https) behind nginx

也许或网络服务我必须做其他事情?我也使用 mojolicious lite。

url_for 也是在模板文件 .html.ep 中完成的。我用它从 javascript 调用网络服务。

我在 Ubuntu 18.04 上运行 Mojolicious 7.59。谢谢你的帮助

【问题讨论】:

    标签: 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 有更多文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多