2016-10-17 6 views
0

아파치 2.4에서 nginx까지의 쿠키를 사용하여 프록시를 통해 http 헤더를 전달하려고합니다.http 헤더를 쿠키로 푸시

Apache는 Active Directory에 대해 kerberos 인증을 수행 할 때만 사용할 수 있습니다. AD 인증이 모든 get 요청에 추가하는 오버 헤드 때문에 인증을 제한하려고합니다. 아이디어는 x 시간 후에 만료되는 쿠키를 설정하고 쿠키가 존재하지 않는 경우에만 apache를 통해 인증을 수행하는 것입니다. 또한 remote_user를 nginx에서 사용할 수 있도록 apache에서 원합니다.

는 Nginx에 포트 80에서 수신 대기, 나는 아파치에서 HTTP 헤더를 설정할 수,하지만 이들의 nginx 땅에서 길을 잃지 포트 81 (동일한 호스트)

에 아파치하는 인증 하위 요청을한다.

내가 먼저 nginx에서 관심있는 특정 http 헤더를 읽으려고했으나 일단 요청이 nginx로 전송되면 볼 수는 없지만 아파치 측면에서 볼 수는있다.

두 번째 아이디어는 내가 관심있는 헤더를 서버 쿠키에 푸시 한 다음 nginx 쪽에서 추출하지만 쿠키 값은 항상 비어 있습니다.

RewriteRule .* - [E=PROXY_USER:%{LA-U:REMOTE_USER}] 
Header add X-Auth-User %{PROXY_USER}e 

내가 아파치 측면에 해당 헤더의 벌금을 볼 수 있지만, nginx를 측 아무것도 : 아파치의 conf에서

나는 있습니다. 아파치에 쿠키로 데이터 펌프하려고

:

RewriteCond %{LA-U:REMOTE_USER} (.*) 
RewriteRule ^/ - [env=COOKIE1:%1] 
RewriteRule .* - [CO=acaprox:tst=%{COOKIE1}e:.my-domain.com:300:/] [R=307,L] 

이 방법의 문제는 시험의 값은 항상 비어 있다는 것입니다.

나는 또한 내가 성공적으로 쿠키에, 헤더에 밀어 수있는 환경 변수를 재사용했지만, 또한 항상 비어 :

아마 노골적으로 알 수있는 바와 같이
RewriteRule .* - [CO=cookietest:tst=%{ENV:PROXY_USER}:.my-domain.com:300:/] [R=307,L] 

, 내가 많이하지 않아도 이 공간에서의 경험.

답변

0

이 문제는 remote_user와 관련이있는 것처럼 보입니다. 다른 변수는 내가 사용하고있는 접근 방식과 함께 작동합니다.

나를위한 해결책은 업스트림 프록시 (예 : x-remote-user)에 추가 헤더를 설정 한 다음 auth_request가 성공하면 그 값을 가져 오는 것이 었습니다.

auth_request $user $upstream_http_x_remote_user 

는 $ 사용자 변수는 쿠키에 푸시 할 수

관련 문제