Я пытаюсь реализовать приложение Catalyst, используя nginx в качестве внешнего веб-прокси для статических файлов и используя Starman для моего внутреннего веб-сервера. (Я мог бы использовать Apache & FastCGI, и он прекрасно работает, но мне бы очень хотелось, чтобы все про PSGI / Plack и Starman было сглажено)
Starman запускается нормально и прекрасно обрабатывает мои запросы на http://localhost:5000
. Когда я запускаю nginx для использования в качестве внешнего прокси-сервера, мои URL становятся уродливыми и портятся с номером порта (5000) всякий раз, когда я использую метод $c->uri_for
.
Пример:
$c->uri_for("/login")
becomes
http://myapp.example.com:5000/login
rather than
http://myapp.example.com/login
У меня есть несколько создаваемых журналов, чтобы я мог видеть, какие X-Forwarded-Host
и X-Forwarded-For
установлены как. Для обычных запросов установлены значения (поступающие из nginx), но всякий раз, когда используется метод $c->uri_for
, эти значения не существуют.
Кто-нибудь еще имел эту проблему?
Я что-то упускаю в своей конфигурации nginx или моего Confaly Catalyst?
Спасибо!
Конфигурация nginx:
server {
listen 80;
server_name myapp.example.com;
location /static {
root /data/users/MyApp/root;
expires 30d;
}
location / {
proxy_set_header Host $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)
Версии:
Catalyst : 5.80024
nginx : 0.7.67
Plack : 0.9942
Starman : 0.2006