如何为基于 PSGI / Plack 的 Web 应用程序提供静态文件(图像、javascript、样式表)?
答案可能取决于使用的 Web 服务器,无论是 CGI、FastCGI、mod_psgi 还是像 Starman 这样的纯 Perl。我听说使用 Plack::Middleware::Static 或 Plack::App::File(连同 Plack::App::URLMap)仅用于开发......
如何为基于 PSGI / Plack 的 Web 应用程序提供静态文件(图像、javascript、样式表)?
答案可能取决于使用的 Web 服务器,无论是 CGI、FastCGI、mod_psgi 还是像 Starman 这样的纯 Perl。我听说使用 Plack::Middleware::Static 或 Plack::App::File(连同 Plack::App::URLMap)仅用于开发......
就实时部署而言,一个非常简单(且快速)的设置是让 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;
}
}