【发布时间】:2011-03-22 05:14:29
【问题描述】:
我正在尝试使用 nginx 作为静态文件的前端 Web 代理,并使用 Starman 作为我的后端 Web 服务器来实现 Catalyst 应用程序。 (我可以使用 Apache 和 FastCGI,它工作得很好,但我真的很想解决整个 PSGI / Plack 和 Starman 的问题)
Starman 启动正常,可以在 http://localhost:5000 上处理我的请求。当我启动 nginx 以用作我的前端代理时,无论何时何地我使用 $c->uri_for 方法,我的 url 都会变得丑陋并与端口号 (5000) 混淆。
例子:
$c->uri_for("/登录") 变成 http://myapp.example.com:5000/login 而不是 http://myapp.example.com/login我创建了一些日志,所以我可以看到 X-Forwarded-Host 和 X-Forwarded-For 的设置。对于普通请求,设置了值(来自 nginx),但无论何时使用 $c->uri_for 方法,这些值都不存在。
还有其他人遇到过这个问题吗?
我在配置 nginx 或 Catalyst conf 时是否遗漏了其他内容?
谢谢!
nginx 配置:
服务器 { 听 80; server_name myapp.example.com; 位置/静态{ 根 /data/users/MyApp/root; 30天到期; } 地点 / { proxy_set_header 主机 $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:5000/; } }事件虽然这将在同一物理服务器上运行,但在我设置的 MyApp 配置中:
MyApp->config(using_frontend_proxy => 1)版本:
催化剂:5.80024 nginx:0.7.67 板厚:0.9942 星人:0.2006【问题讨论】:
标签: perl nginx catalyst starman