问题标签 [plack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
870 浏览

perl - 如何将参数从 plack 应用程序传递到在构建器中启用的 mojolicious 应用程序?

鉴于使用大量中间件组件的示例 plack 应用程序和在构建器中启用的 mojolicious 应用程序(见下文),我如何在不使用显示的丑陋 %ENV hack 的情况下将参数从 app.psgi 传递给 Mojolicious?当然,传递配置只是一个示例,它可以是任何标量/对象。

应用程序.psgi

我的应用程序.pm

0 投票
2 回答
5799 浏览

perl - 使用 Apache 反向代理处理 plack/PSGI 应用程序的身份验证

这是我的场景:

Apache-reverse-proxy-starman

所以,

  1. 通过加密 HTTPS 的请求转到 Apache,例如:https://server1/MyPerlApp
  2. 如果用户未登录,他们会重定向到某个登录页面(在 server1 中),并且 Apache 不会将请求代理到 Server2
  3. 当用户登录时 - 已通过身份验证 - 然后 Apache 将所有请求转发https://server1/MyPerlApphttp://server2:5000

问题1:这可能吗?(问,因为我对 Apache 的了解不够深入,这也不是一个简单的:

因为我需要在 server1 上对用户进行身份验证,并设置ProxyPass只有经过身份验证。由于 Apache 非常灵活,我认为上述答案是肯定的(但非常欢迎确认和详细说明) - 所以这是我的主要具体问题:

  • 我的 Plack 应用程序如何知道在 Apache 级别(在第一台服务器上)验证了哪些用户?
  • 将一些用户信息传递到perlserver2 上的应用程序的简单方法是什么?例如,使用 Apache将参数mod_rewrite附加user=username到每个查询,
  • Apache 可以设置我的perl应用程序应该读取的一些 HTTP 标头吗?
  • 有没有简单和推荐的方法?

我正在寻找如何在我的 starman/perl 应用程序中避免身份验证例程,主要是因为:

  • 用户无论如何都需要登录到 server1(对于他的工作流程中的其他任务)
  • 如果他已经登录,则不需要在我的应用中进行身份验证(避免不必要的双重登录)
  • 但我仍然需要知道哪些用户已登录(通过 server1 上的 Apache)

已经有类似的问题,但是:

0 投票
1 回答
933 浏览

perl - 使用 Plack 处理多个文件上传

尝试使用 Plack 处理多个文件上传。

我的表格:

选择了两个文件,分别称为:x1x2. 结果Data::Dumper

因此,它只包含第二个文件x2,但是当检查文件夹时,/var/folders/7l/nhyscwy14bjb_sxr_t2gynpm0000gn/T/它包含上传的两个文件。

问题是我如何将两个文件都放到脚本中,而不仅仅是最后一个?

0 投票
1 回答
257 浏览

perl - 如果我的 Web 框架想要支持 PSGI,是否需要将 mod_rewrite 规则转换为 Plack::Middleware::Rewrite 规则?

我们有一个基于 FastCGI 的 Web 框架,我们在内部将其用于一些关键任务应用程序。因此,迁移到现有的 PSGI 投诉框架不是很实用。我们已经成功地将我们的框架从普通的旧 CGI.pm 转移到了 Plack 处理程序。

然而,在 Apache 的配置文件中有相当多的路由逻辑,以 mod_rewrite 规则的形式。如果我们要通过 Apache 中的反向代理使用 Plack::Handler::FCGI 部署使用我们新的 PSGI 兼容框架的应用程序,我想 mod_rewrite 规则可以继续在那里工作,并进行一些调整。(计划这样做,但尚未尝试)。

然而,阅读有关 Plack::Middleware::Rewrite 作为 mod_rewrite 的替代品的文章让我很感兴趣。

我是否需要将 mod_rewrite 规则转换为 Plack::Middleware::Rewrite 规则并将所有应用程序逻辑完全移动到 Perl 才能获得 PSGI 的全部好处?

我认为答案是肯定的,但我没有部署 PSGI 应用程序的经验,所以如果有人能分享他们的经验以确保我走上正确的道路,我将不胜感激。

子问题 PSGI 的想法是否就是让 Web 服务器尽可能少(和尽可能快地)做事,并将所有其他东西委托给应用程序服务器(中间件)?**

0 投票
1 回答
726 浏览

perl - 使用带有反向代理的 Plack 应用程序 - Plack::Middleware::Debug

编辑了问题。我有这个简单的 Plack app.psgi

用一个简单的plackup.

当从本地机器访问:http://localhost:5000/some/path时,它会打印: Path info: /some/path并得到一个运行良好的 Plack 调试面板。

现在,我apache:80配置如下:

所以,所有的请求都是:http://SITE/myapp/代理到上面的 Plack 应用程序。因此,当尝试通过

再次浏览器,正确打印:

但是“Plack::Middleware/Debug”不起作用,因为他将下一个 URL 发送到浏览器:

当然,它们不存在。(他们应该是/myapp/debug_toolbar/....

所以问题是:

  • 我需要做什么 - 如何更改上面的 app.psgi 以获得一个工作应用程序?
  • 我需要somewhat更改所有带有前缀的传出 URL/myapp/
0 投票
0 回答
94 浏览

perl - Plack 没有从 Catalyst 中恢复

我有一个应用程序可以选择从磁盘提供文件 - 或者转到 Catalyst 并生成一个动态文件。

像这样的东西(在 call() 内部):

我想在它回来时设置一些 cookie。所以我使用 Plack::Util

结果?在第一种情况下(Plack::App::File),一切都按预期工作。在第二个(以正常方式继续使用应用程序)它永远不会回来。

我想知道为什么会这样?这是我的 psgi 初始化:

0 投票
1 回答
974 浏览

perl - Plack::App::CGIBin 通过 Apache 和 mod_fastcgi - 找不到 CGI 脚本

我正在尝试Plack::App::CGIBin在 FreeBSD 8.2 上使用 Apache2 和 FastCGI。最终目标是能够使用此设置通过 Plack 为一大堆遗留 CGI 脚本提供服务,以利用其中间件功能,但我什至无法让一个简单的示例正常工作。

我已经关注了Plack::Handler::FCGIPlack::App::CGIBin本身的 CPAN 文档,但我不确定我是否遗漏了某些内容或做错了这些文档未涵盖的内容。

这是我添加的 Apache 配置:

运行外部服务器的命令:

服务器启动成功,返回如下:

这是 app.psgi:

然后我有一个简单的 CGI 脚本/data/www/plack/test.cgi(这个文件在 CGI.pm 下运行良好)。

我期望的是对http://<domain>/plack/test.cgi/(包括尾部斜杠)的请求将返回测试脚本,但我总是在 Apache 错误日志中收到以下 404 错误,我认为这是从 FastCGI 服务器返回的:

我已经让 FastCGI 自己工作,使用 mod_fastcgi 和应用目录中的一个简单示例脚本SetHandler fastcgi-script,所以至少可以工作:-)。

有没有人Plack::App::CGIBin在类似的情况下工作过?我将不胜感激任何见解!

谢谢

0 投票
1 回答
760 浏览

perl - 如何在 Perl/Plack 中打印环境变量

我正在尝试使用 Perl/Plack 用环境变量切换“Ben”。如果设置了环境变量(例如“Dave”),那么它将打印出“Powered by Dave”。但如果未设置,它将默认为“Ben”。

目前,以下程序在使用时有效plackup -r

目前,我的 cpanfile 包含以下内容

0 投票
2 回答
53 浏览

perl - Perl 模块可用于不同的网络框架

想要制作一个 perl-module 基本上是什么:

  • 从网络请求中获取一些参数
  • 做一些内部逻辑
  • 并生成一个 json 字符串

我的问题是:这里有许多不同的方法来处理网络请求(解码查询字符串),比如(两个值得注意的是:)

  • CGI $query->{‘somearg’}或类似
  • Plack (Plack::Request)
  • 可能还有其他的……(网络框架等等……)

我应该如何编写模块,以便与不同的前端一起使用?

考虑类似的事情:

等等…

但有些我觉得这不是一个很好的解决方案......

这里有一些推荐的方法来处理这种情况吗?任何 CPAN 模块我应该学习什么?

0 投票
1 回答
715 浏览

python - Perl 主管 plackup starman perlbrew

我想知道是否有像 supervisord 这样的 Perl 工具来管理进程。

http://supervisord.org/

我见过一个叫做Supervisor的Perl程序,但我不知道它是否和Python一样好:

https://metacpan.org/pod/Supervisor

我希望能够启动一个 plack 服务器并在必要时拥有一个重新启动它的监视器。

我使用 perlbrew,我想制作一个 shell 脚本来启动服务器,然后进行如下配置:

你是否在 plack、starman 和 perlbrew 的 Perl 项目中使用了 Supervisord。你有什么建议?

我的问题是开放的,以了解在生产中什么对我的 plack 服务器最有利。

谢谢