정적 파일을 위해 Nginx 프런트 엔드를 실행하고 Apache의 mod_rpaf를 사용하여 백엔드에서 올바른 원격 IP 주소를 설정하여 PHP 및 승객을위한 Apache 백엔드로 프록시를 작성하고 있습니다. Ubuntu 12.04 (Precise)로 업그레이드 할 때까지 모든 것이 잘 작동했습니다. 이제 Apache는 127.0.0.1에서 오는 모든 연결을보고합니다.
관련 구성은 다음과 같습니다. 업그레이드로 변경된 사항은 없습니다.
Nginx :
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
mod_rpaf :
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ::1
RPAFheader X-Forwarded-For
</IfModule>
내가 사용하고 %{X-Forwarded-For}i
내 아파치 LogFormat 지시어에 내가 Nginx에 제대로 따라 주소를 전달하고 알 수 있도록 액세스 로그는 올바른 원격 주소를 보여주고있다.
A의 phpinfo()
시험 HTTP_X_FORWARDED_FOR 올바른 원격 주소를 보이고 있지만 REMOTE_ADDR는 127.0.0.1이다. 이것은 WordPress 주석과 같은 PHP 응용 프로그램에도 반영됩니다.
Nginx와 mod_rpaf를 X-Real-IP로 전환하려고 시도했지만 아무런 효과가 없습니다.
내가 놓친 변화가 있었습니까?
관련 버전 정보 : Ubuntu 저장소에서 설치된 모든 것 :
Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6
답변
방금이 문제를 직접 처리했습니다. 금요일에 우분투 버그가 확인되었습니다. 다음을 변경하여 작업을 다시 수행 할 수 있습니다.
<IfModule mod_rpaf.c>
에
<IfModule mod_rpaf-2.0.c>
/etc/apache2/mods-available/rpaf.conf에
답변
mod_rpaf는 Debian Jessie에서 더 이상 사용되지 않는 것으로 보이며 추가 개발이 중단되었습니다. Debian Jessie의 기본 모듈 인 mod_remoteip으로 전환하십시오.
답변
이 질문에 대한 업데이트입니다. mod_rpaf가 사용하는 변수의 형식이 변경되었습니다. Apache는 현재 위에 나열된 변수 (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader)로 시작하지 않습니다.
새로운 형식은 다음과 같습니다.
LoadModule rpaf_module modules/mod_rpaf.so
RPAF_Enable On
RPAF_ProxyIPs 127.0.0.1 10.0.0.0/24
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
RPAF_ForbidIfNotProxy Off