(https) Nginx → (http) Play!. Но request.secure неверно
Настроенный Nginx как обратный прокси-сервер перед Play! и передача https
со следующими наборами заголовков: -
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Ssl https;
login()
[https://localhost/login
] отправляется в Play! на порту
9000 - "http". Но request.secure в login() по-прежнему "false". Есть идеи?
UPDATE:
вот сервер conf: -
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /home/aymer/play/key/localhost.crt;
ssl_certificate_key /home/aymer/play/key/localhost.key;
ssl_session_timeout 5m;
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /home/aymer/play/playapp/public;
expires 30d;
}
location ~* (login|register)$ {
proxy_pass http://localhost:9000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Ssl on;
}
location / {
rewrite ^/(.*) http://$host/$1 permanent;
}
}
Ответы
Ответ 1
вторая запись неверна, она должна быть:
proxy_set_header X-Forwarded-Ssl on;
Это решит проблему
UPDATE: без возможности тестирования, единственное, что я вижу, это этот заголовок:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Кроме того, все кажется правильным.
Ответ 2
Просто, чтобы все было ясно. Я столкнулся с этой проблемой и немного затруднился с полным рабочим решением.
Чтобы он работал, ваша конфигурация nginx должна содержать:
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Параметр
proxy_set_header X-Forwarded-Proto https;
бесполезен (для этого варианта использования).
НО вам также нужно указать это в вашем приложении application.conf:
XForwardedSupport=<proxy server address> # generally, 127.0.0.1
Этот ответ - всего лишь набросок всего разговора между Пере Виллегой и Аймером.
Ответ 3
Я думаю, что решение изменилось бы:
"proxy_redirect off;"
в
"proxy_redirect http://localhost https://localhost;"
"localhost"
является значением для имени_сервера.