referer https->http

VovansystemS vovansystems на gmail.com
Пн Июл 13 12:53:31 UTC 2015


> А можете подсказать как это реализовать?
а Вы не могли бы ещё раз подробно рассказать как сейчас у Вас всё
настроено и как оно работает?

чтобы лучше понять проблему, я поднял тестовые конфигурации вида:

srv1:443 - он перенаправляет только специальный ури на http с кодом 301

server {

        listen          443 ssl spdy;
[...]
  location = /x.php {
    return 301 http://srv1/x.php;
  }
}

srv1:80 - генерирует php файл, который показывает переменные массива
$_SERVER (нас интересует HTTP_REFERER):

server {
  listen 80;
  server_name srv1;

    root /www/srv1/public_html/;
    set $sock unix:/www/srv1/socket.sock;
[...]
        location = /x.php {
            try_files $fastcgi_script_name =404;
            fastcgi_pass $sock;
        }
}


cat x.php
<pre><?php print_r($_SERVER); ?></pre>

srv2:80 - здесь лежит тестовая ссылка в фале test.html вида <a
href="https://srv1/x.php">x.php</a>

теперь я открываю http://srv2/test.html и нажимаю на ссылку https://srv1/x.php
srv1 отвечает кодом 301 с заголовком Location: http://srv1/x.php
браузер делает туда запрос всё с тем же оригинальным Referer:
http://srv2/test.html
и мне показывают страницу вывода моего скрипта, который содержит строчку:
[HTTP_REFERER] => http://srv2/test.html
он же оригинальный реферер.

> Соответственно на http не поступает оригинальный реферер (тот который
> приходит на https).
> Нужно его как-то получать в http запросах уже после редиректа.
т.е. у меня не получилось воспроизвести проблему


Подробная информация о списке рассылки nginx-ru