問題タブ [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 アプリ (以下を参照) を考えると、表示されている醜い %ENV ハックを使用せずに、app.psgi から Mojolicious にパラメーターを渡すにはどうすればよいでしょうか? 構成を渡す原因は単なる例であり、これは任意のスカラー/オブジェクトである可能性があります。
app.psgi
MyApp.pm
perl - plac/PSGI アプリの Apache リバース プロキシを使用した認証の処理
これは私のシナリオです:
そう、
- 暗号化された HTTPS 経由のリクエストは、次のように Apache に送信されます。
https://server1/MyPerlApp
- ユーザーがログインしていない場合、ログイン ページ (server1 内) へのリダイレクトが行われ、Apache は要求を Server2 にプロキシしません。
- ユーザーがログインすると - IS 認証されます - Apache は
https://server1/MyPerlApp
、http://server2:5000
質問1: これは可能ですか? (私は Apache について十分に詳しく知りません。これは簡単なことではありません。
ProxyPass
server1 でユーザーを認証し、認証された場合のみを設定する必要があるためです。Apacheは非常に柔軟なので、上記の答えはイエスだと思います(ただし、確認と詳細は大歓迎です)-主な具体的な質問は次のとおりです。
- Plack アプリケーションは、どのユーザーが Apache レベル (つまり、最初のサーバー) で認証されているかをどのように認識しますか?
- ユーザー情報の一部
perl
をサーバー上のアプリに配信する簡単な方法は何ですか? たとえば、各クエリにパラメーターをmod_rewrite
追加するApache の場合、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 で複数のファイルのアップロードを処理しようとしています。
私のフォーム:
と という名前の 2 つのファイルを選択x1
しx2
ました。のData::Dumper
結果:
は
そのため、2 番目のファイルのみが含まれてい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 ルールはいくつかの微調整を加えて、そこで引き続き機能すると思います。(これを行う予定ですが、まだ試していません)。
しかし、mod_rewrite の代わりとしての Plack::Middleware::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 - プラックがカタリストから戻ってこない
ディスクからファイルを提供するか、Catalyst に移動して動的ファイルを生成するかを選択できるアプリがあります。
このようなもの(call()内):
戻ってきたら、いくつかの Cookie を設定したいと思います。だから私は Plack::Util を使います
結果?最初のケース (Plack::App::File) では、すべてが期待どおりに機能します。2 番目 (通常の方法でアプリを続行) では、元に戻ることはありません。
なぜこれが起こっているのだろうか?これが私の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 エラーが表示されます。
mod_fastcgi とSetHandler fastcgi-script
適用されたディレクトリ内の単純なサンプル スクリプトを使用して、FastCGI を独自に動作させたので、少なくとも動作しました :-)。
誰かがPlack::App::CGIBin
同様のシナリオの下で働いていますか? 洞察をいただければ幸いです。
ありがとう
perl - Perl/Plack で環境変数を出力する方法
Perl/Plack を使用して、環境変数で「Ben」を切り替えようとしています。環境変数が設定されている場合 (「Dave」など)、「Powered by Dave」と出力されます。ただし、設定されていない場合は、デフォルトで「Ben」になります。
現在、次のプログラムは使用時に動作しますplackup -r
現在、私のcpanfileには次のものが含まれています