如何为PSGI/Plack Web应用程序(在Perl中)提供静态文件(图像等)?

Jak*_*ski 3 perl web-applications plack psgi

如何为基于PSGI/Plack的Web应用程序提供静态文件(图像,javascript,样式表)?

答案可能取决于人们使用的Web服务器,无论是CGI,FastCGI,mod_psgi,还是像Starman这样的纯Perl.我听说使用Plack :: Middleware :: Static或Plack :: App :: File(以及Plack :: App :: URLMap)仅用于开发......

oal*_*ers 6

就实时部署而言,如果您让Web服务器处理静态内容并让Plack应用程序处理动态内容,则非常简单(快速)的设置.这通常需要在您的Web服务器配置中至少有2个代理.代理A到你的静态文件(假设它们通常都在同一个地方)和代理B到你的Plack应用程序部署的端口.

例如,nginx配置的一部分可能如下所示.假设Plack应用程序在本地端口5001上运行,并且您的静态文件在URL http://mydomainname.com/static下可用

server {
    listen 80;
    server_name mydomainname.com;

    location / {
        proxy_pass http://localhost:5001/;
        proxy_redirect off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Port $server_port;
        proxy_set_header   X-Forwarded-Host $host;
    }

    location /static {                                                                                                                                             
        root /path/to/static/files;                                                                                                                         
    }

}
Run Code Online (Sandbox Code Playgroud)

  • @JakubNarębski 我已经为您添加了一个示例 nginx 配置。Apache 配置在概念上类似。如果您也需要的话,我可以为您找到一个 Apache 示例。 (2认同)