Подтвердить что ты не робот

(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;
    }
}
4b9b3361

Ответ 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" является значением для имени_сервера.