我正在尝试使用 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