Я трачу уже более двух дней на эту проблему, пробуя несколько серверов (apache, теперь nginx), просматривая всю сеть, но пока мне не повезло.
Во-первых: извините за отправку моих URL-адресов с http-s вместо https - это потому, что мне не разрешено размещать здесь более двух ссылок :(
Веб-сайт предлагает доступ к архиву журнала при покупке учетной записи. Теперь у нас есть одна учетная запись для всего нашего института. Но мы не хотим делиться учетными данными для всех здесь, поэтому мы подумали, что можем настроить прокси, который «выполняет вход в фоновом режиме» или что-то в этом роде.
Учетные данные для входа могут быть отправлены через http GET (параметры запроса в URL-адресе), например
http-s://www.magaine.org/science/issueSelect?user=institute&pass=secret
Все сдает ssl-шифрование.
Настройка:
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 поддерживает регулярные выражения, мне следовало прочитать руководство более подробно. Теперь у меня есть ожидаемая функциональность.