Я настроил nginx как обратный прокси для нашего сервера сборки Hudson следующим образом:
server {
listen 80;
server_name koala.proxy.internal;
location /hudson/ {
proxy_pass http://build.example.com/hudson/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $http_host;
proxy_redirect off;
}
Внутренний сервер Hudson настроен для аутентификации пользователей в Active Directory с помощью плагина активного каталога Hudson.
Все работает нормально, за исключением того, что когда я нажимаю кнопку выхода, ничего не происходит, и я все еще вошел в систему, тогда как ожидаемое поведение таково, что я должен выйти из системы и вернуться на страницу входа.
Заголовки запроса и ответа в firebug показывают следующее: Ответ:
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Wed, 01 Sep 2010 02:40:57 GMT
Connection: keep-alive
Set-Cookie: ACEGI_SECURITY_HASHED_REMEMBER_ME_COOKIE=""; Path=/hudson
Location: http://koala.proxy.internal/hudson/
Content-Length: 0
Expires: Thu, 02 Sep 2010 02:40:57 GMT
Cache-Control: max-age=86400
Запрос:
GET /hudson/logout HTTP/1.1
Host: koala.proxy.internal
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://koala.proxy.internal/hudson/people/
Cookie: screenResolution=1280x720; JSESSIONID=8957FA425BC89DE784266DAACAD45135
Ниже приведены заголовки с сервера Hudson, когда я обращаюсь к нему напрямую и нажимаю кнопку выхода:
Отклик:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Expires: 0
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 01 Sep 2010 05:00:33 GMT
Запрос:
GET /hudson/login?from=%2Fhudson%2F HTTP/1.1
Host: build.example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://build.example.com/hudson/
Cookie: screenResolution=1280x720; JSESSIONID=105C0A7031B817E0321336310FC8D6E1
Как я понимаю из заголовков, когда я нажимаю кнопку выхода, запрос GET должен быть для "/hudson/login?from=%2Fhudson%2F"
а не для "/hudson/logout"
, как это происходит через обратный прокси.
Я пробовал много вещей, чтобы заставить его работать, но безрезультатно. Буду очень признателен, если бы кто-нибудь мог направить меня сюда.
Спасибо, Могарой
Для тех, кто может столкнуться с подобными проблемами, я решил свою проблему, добавив 'add_header Pragma "без кеширования"'в мою конфигурацию.
http://agiletesting.blogspot.com/2010/06/commong-nginx-configuration-options.html
Спасибо, Могарой