Назад | Перейти на главную страницу

Обратный прокси-сервер nginx скрывает запрос входа также при перенаправлении 301 или полном URL-адресе

Я трачу уже более двух дней на эту проблему, пробуя несколько серверов (apache, теперь nginx), просматривая всю сеть, но пока мне не повезло.

Во-первых: извините за отправку моих URL-адресов с http-s вместо https - это потому, что мне не разрешено размещать здесь более двух ссылок :(

  1. Веб-сайт предлагает доступ к архиву журнала при покупке учетной записи. Теперь у нас есть одна учетная запись для всего нашего института. Но мы не хотим делиться учетными данными для всех здесь, поэтому мы подумали, что можем настроить прокси, который «выполняет вход в фоновом режиме» или что-то в этом роде.

  2. Учетные данные для входа могут быть отправлены через http GET (параметры запроса в URL-адресе), например

    http-s://www.magaine.org/science/issueSelect?user=institute&pass=secret

  3. Все сдает ssl-шифрование.

  4. Настройка:

    Request:
    [user] --> http-s://proxyserver.org/science/issueSelect --> [proxy] --> http-s://www.magazine.org/science/issueSelect?user=institute&pass=secret [magazine-server]
    Reply:
    [magazine-server] --> http-s://www.magazine.org/science/issueSelect?ser=institute&pass=secret --> [proxy] --> http-s://www.proxyserver.org/science/issueSelect --> [user]

Обычно это не должно быть проблемой для настройки с помощью nginx, apache и т. Д., Но у меня проблема в том, что иногда учетные данные для входа появляются в адресной строке браузера пользователя. Когда это происходит? Когда сервер журнала предоставляет "специальные" гиперссылки (которые, вероятно, также перенаправляются куда-нибудь еще). Эти гиперссылки кажутся не относительными, а абсолютными. Тем не менее, обратный прокси-сервер, кажется, переводит их обратно правильно, потому что также в этих ссылках мой proxyhost.org указан как fqdn.

Some navigation links --> working the way they should
a href="/nature/...">Nature
a href="/science/...">Science
a href="/it/...">IT

Some article overview links --> on Click revealing login credentials in url bar
a href="http-s://proxyserver.org/science/2015/1>Issue 2015 / 1
a href="http-s://proxyserver.org/science/2015/2>Issue 2015 / 2

У меня также есть ощущение, что за этими ссылками на проблемы также есть некоторые перенаправления.

Вот моя конфигурация:

server {
    listen 443 ssl;
    server_name proxyserver.org;

    ssl_certificate           /etc/nginx/ssl/proxyserver.certificate;
    ssl_certificate_key       /etc/nginx/ssl/proxyserver.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/access.log;


    location / 
    {
      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;
      set $args $args&user=institute&pass=secret;
# working as well
#      rewrite ^(.*)$ $1?user=institute&pass=secret? break; 
      proxy_pass      https://www.magazine.org;
# not working: 404
#     proxy_redirect  https://www.magazine.org/ https://proxyserver.org/; 
    }
  }

Есть идеи, как это решить? Или мне нужен более сложный подход, что-то вроде маленького клиента на моем прокси, который также хранит файлы cookie сеанса и т. Д.? Спасибо!

Хорошо, это был заголовок местоположения, который был изменен, в результате чего параметры запроса URL-адреса отображались в строке URL-адресов. Я мог бы избавиться от этого явления, изменяя его на лету движком nginx:

proxy_redirect "~^(.*)\?.*$" "$1";

Я не знал, что proxy_redirect поддерживает регулярные выражения, мне следовало прочитать руководство более подробно. Теперь у меня есть ожидаемая функциональность.