2011-03-02 3 views
4

도메인 인증 플러그인을 사용하여 IP 주소를 기반으로 사이트 방문자에게 회원 역할을 할당하려고합니다.PluggableAuthService의 도메인 인증 플러그인과 작동하도록 웹 서버를 구성하려면 어떻게해야합니까?

플러그인을 구성 할 수 있지만 모든 요청은 "실제"IP 주소가 아닌 localhost에서 발생합니다.

이 경우 NGINX를 사용하고 있으므로 proxy_set_header (예 : http://wiki.nginx.org/HttpProxyModule)를 통해 X-Real-IP를 $ remote_addr로 설정하려고 시도했지만 헤더에서 IP 주소를 사용할 수 있음을 알 수 있습니다.

NGINX에서 Plone으로 보낸 요청이 원격 IP 주소에서 보낸 것처럼 보이게하려면 어떻게해야합니까?

저는 NGINX를 사용하고 있지만 아파치에도 적용되는 답변이 열려 있습니다.

답변

6

REMOTE_ADDR 변수와 X-FORWARDED-FOR 헤더를 차례로 사용하는 도메인 인증 플러그인은 request.getClientAddr() 방법을 사용하여 클라이언트의 IP 주소를 결정합니다.

일반적으로 누구나 설정할 수있는 것처럼 X-FORWARDED-FOR 헤더에 의존 할 수 없습니다. 하지만 Zope이 주어진 신뢰할 수있는 프록시 집합의 헤더를 신뢰하도록 설정할 수 있습니다. 신뢰할 수있는 프록시 목록을 사용하면 REMOTE_ADDR IP 주소는 신뢰할 수있는 주소가 부족할 때까지 X-FORWARDED-FOR 헤더에 지정된 다음 주소로 바뀝니다. 발견 된 마지막 IP 주소는 새 클라이언트 주소입니다. 이렇게하면 일련의 프록시를 연결하고 역할을 기반으로하는 올바른 클라이언트 주소를 얻을 수 있다는 것을 여전히 신뢰할 수 있습니다.

Zope가 프록시의 X-FORWARDED-FOR 헤더를 신뢰하도록 구성하려면 zope.conf 파일에 trusted-proxy 구성 매개 변수를 설정하십시오. 당신의 nginx 서버가 동일한 호스트에서 실행되는 경우, 단지 로컬 호스트로 설정 : 여러 항목을 추가하여 하나 이상의 이름을 지정

trusted-proxy 127.0.0.1 

:

trusted-proxy 127.0.0.1 
trusted-proxy loadbalancer.localnet 

trusted-proxy는 IP 주소와 호스트 이름을 모두합니다.

+0

고마워 Martijn! Rok Garbas가 개인적으로 나에게 지적한 것처럼, NGINX 설정에서이 작업을 수행해야합니다. proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for. – aclark

+0

안녕 Martijn, 두 개 이상의 항목을 넣을 수 있습니까? 나는 신뢰할 수있는 프록시 라인에 "delivery2 delivery"을 가지고 있으며, 시작을 거부한다. "delivery2 192.168.1.10"도 시작을 거부합니다 ... – gforcada

+0

@gforcada : 다시 말하지만, 나는 멀티 키의 사용법을 잘못 기억했을 수도 있습니다. 아마도'trusted-proxy 127.0.0.1' 개행'trusted-proxy loadbalancer.localnet'이어야합니다. 그렇다면 사과드립니다. –

0

많은 역방향 프록시가 X-Forwarded-For 헤더를 원래 IP로 설정합니다. 아직 인증하지 않은 경우 도메인 인증 플러그인을 업데이트해야합니다.

+1

X-Forwarded-For 헤더를 처리 할 필요가 없으므로 Zope는 trusted-proxy 구성 변수를 설정 한 경우이를 수행합니다. :-) –

관련 문제