问题标签 [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.
perl - 如何将参数从 plack 应用程序传递到在构建器中启用的 mojolicious 应用程序?
鉴于使用大量中间件组件的示例 plack 应用程序和在构建器中启用的 mojolicious 应用程序(见下文),我如何在不使用显示的丑陋 %ENV hack 的情况下将参数从 app.psgi 传递给 Mojolicious?当然,传递配置只是一个示例,它可以是任何标量/对象。
应用程序.psgi
我的应用程序.pm
perl - 使用 Apache 反向代理处理 plack/PSGI 应用程序的身份验证
这是我的场景:
所以,
- 通过加密 HTTPS 的请求转到 Apache,例如:
https://server1/MyPerlApp
- 如果用户未登录,他们会重定向到某个登录页面(在 server1 中),并且 Apache 不会将请求代理到 Server2
- 当用户登录时 - 已通过身份验证 - 然后 Apache 将所有请求转发
https://server1/MyPerlApp
到http://server2:5000
问题1:这可能吗?(问,因为我对 Apache 的了解不够深入,这也不是一个简单的:
因为我需要在 server1 上对用户进行身份验证,并设置ProxyPass
只有经过身份验证。由于 Apache 非常灵活,我认为上述答案是肯定的(但非常欢迎确认和详细说明) - 所以这是我的主要具体问题:
- 我的 Plack 应用程序如何知道在 Apache 级别(即在第一台服务器上)验证了哪些用户?
- 将一些用户信息传递到
perl
server2 上的应用程序的简单方法是什么?例如,使用 Apache将参数mod_rewrite
附加user=username
到每个查询, - Apache 可以设置我的
perl
应用程序应该读取的一些 HTTP 标头吗? - 有没有简单和推荐的方法?
我正在寻找如何在我的 starman/perl 应用程序中避免身份验证例程,主要是因为:
- 用户无论如何都需要登录到 server1(对于他的工作流程中的其他任务)
- 如果他已经登录,则不需要在我的应用中进行身份验证(避免不必要的双重登录)
- 但我仍然需要知道哪些用户已登录(通过 server1 上的 Apache)
已经有类似的问题,但是:
- https://stackoverflow.com/q/12561830/734304(没有答案)
- https://stackoverflow.com/q/11907797/734304(没有答案)
- 具有基本身份验证的 Apache 反向代理(类似,但后端在同一服务器和同一 apache 中)
perl - 使用 Plack 处理多个文件上传
尝试使用 Plack 处理多个文件上传。
我的表格:
选择了两个文件,分别称为:x1
和x2
. 结果Data::Dumper
:
是
因此,它只包含第二个文件x2
,但是当检查文件夹时,/var/folders/7l/nhyscwy14bjb_sxr_t2gynpm0000gn/T/
它包含上传的两个文件。
问题是我如何将两个文件都放到脚本中,而不仅仅是最后一个?
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 服务器尽可能少(和尽可能快地)做事,并将所有其他东西委托给应用程序服务器(中间件)?**
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/
perl - Plack 没有从 Catalyst 中恢复
我有一个应用程序可以选择从磁盘提供文件 - 或者转到 Catalyst 并生成一个动态文件。
像这样的东西(在 call() 内部):
我想在它回来时设置一些 cookie。所以我使用 Plack::Util
结果?在第一种情况下(Plack::App::File),一切都按预期工作。在第二个(以正常方式继续使用应用程序)它永远不会回来。
我想知道为什么会这样?这是我的 psgi 初始化:
perl - Plack::App::CGIBin 通过 Apache 和 mod_fastcgi - 找不到 CGI 脚本
我正在尝试Plack::App::CGIBin
在 FreeBSD 8.2 上使用 Apache2 和 FastCGI。最终目标是能够使用此设置通过 Plack 为一大堆遗留 CGI 脚本提供服务,以利用其中间件功能,但我什至无法让一个简单的示例正常工作。
我已经关注了Plack::Handler::FCGI和Plack::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
在类似的情况下工作过?我将不胜感激任何见解!
谢谢
perl - 如何在 Perl/Plack 中打印环境变量
我正在尝试使用 Perl/Plack 用环境变量切换“Ben”。如果设置了环境变量(例如“Dave”),那么它将打印出“Powered by Dave”。但如果未设置,它将默认为“Ben”。
目前,以下程序在使用时有效plackup -r
目前,我的 cpanfile 包含以下内容
perl - Perl 模块可用于不同的网络框架
想要制作一个 perl-module 基本上是什么:
- 从网络请求中获取一些参数
- 做一些内部逻辑
- 并生成一个 json 字符串
我的问题是:这里有许多不同的方法来处理网络请求(解码查询字符串),比如(两个值得注意的是:)
- CGI
$query->{‘somearg’}
或类似 - Plack (Plack::Request)
- 可能还有其他的……(网络框架等等……)
我应该如何编写模块,以便与不同的前端一起使用?
考虑类似的事情:
等等…
但有些我觉得这不是一个很好的解决方案......
这里有一些推荐的方法来处理这种情况吗?任何 CPAN 模块我应该学习什么?
python - Perl 主管 plackup starman perlbrew
我想知道是否有像 supervisord 这样的 Perl 工具来管理进程。
我见过一个叫做Supervisor的Perl程序,但我不知道它是否和Python一样好:
https://metacpan.org/pod/Supervisor
我希望能够启动一个 plack 服务器并在必要时拥有一个重新启动它的监视器。
我使用 perlbrew,我想制作一个 shell 脚本来启动服务器,然后进行如下配置:
你是否在 plack、starman 和 perlbrew 的 Perl 项目中使用了 Supervisord。你有什么建议?
我的问题是开放的,以了解在生产中什么对我的 plack 服务器最有利。
谢谢