문제

우리는 proxypass를 사용하여 다음과 같이 포트 18080의 JBoss에 모든 "/r"요청을 리디렉션하고 있습니다.

ProxyPreserveHost on
ProxyPass /r http://localhost:18080/redirectService/
ProxyPassReverse /r http://localhost:18080/redirectService/

그러나 JBoss의 액세스 로그에 로그인 된 IP 주소가 "127.0.0.1"로 기록됩니다. 누군가가 httpservletrequest의 요청이 온 곳에서 원래 IP를 어떻게 보존 할 수 있는지 알고 있습니까? 우리는 doget ()의 jboss servlet 요청에서 그것에 의해 그것을 사용하고 싶습니다.

도움이 되었습니까?

해결책

원래 호스트를 얻을 수 있습니다 x-forwarded-for 헤더 필드.

다른 팁

Jasonw의 대답은 괜찮습니다. 그러나 Apache httpd 2.4.6 이후 대안이 있습니다 : mod_remoteip

당신이해야 할 일은 다음과 같습니다.

  1. mod_remoteip 패키지를 설치해야 할 수도 있습니다
  2. 모듈 활성화 :

    LoadModule remoteip_module modules/mod_remoteip.so
    
  3. Apache HTTPD 구성에 다음을 추가하십시오. 이 줄을 추가해야합니다 ~ 아니다 프록시 서버의 구성으로 당신은해야합니다 프록시 대상 httpd 서버 구성에 이것을 추가하십시오. (프록시 뒤의 서버) :

    RemoteIPHeader X-Forwarded-For
    

참조하십시오 http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html 더 많은 정보와 더 많은 옵션.

이것은 더 우아한 설명과 하나 이상의 가능한 솔루션을 가지고 있습니다. http://kasunh.wordpress.com/2011/10/11/preserving-remote-iphost-while-proxying/

이 게시물은 프록시와 관련된 설정에서 호스트/IP를 보존하기 위해 인기있는 하나의 덜 알려진 아파치 모듈을 사용하는 방법에 대해 설명합니다.

mod_rpaf 모듈을 사용하고 백엔드 서버에 설치 및 활성화하고 모듈 구성에 다음 지침을 추가하십시오. rpafenable on
rpafsethostname on
RPAFPROXY_IPS 127.0.0.1

(2017 편집) Mod_RPAF의 현재 위치 : https://github.com/gnif/mod_rpaf

그렇게 할 수있는 기능이 있다면 어느 쪽이든 사용하는 것이 좋습니다. mod-jk 또는 MOD-PROXY-AJP Apache에서 Jboss로 요청을 전달합니다. AJP 프로토콜은 HTTP 프록시 요청을 사용하는 것과 비교하여 훨씬 효율적이며 혜택으로 JBoss는 요청이 Apache가 아닌 원래 클라이언트에서 오는 것으로 보게됩니다.

로컬 호스트 포트에서 실행되는 앱을 제공하기 위해 Apache Reverse Proxy를 사용하는 경우 Vhost에 위치를 추가해야합니다.

<Location />            
   ProxyPass http://localhost:1339/ retry=0
   ProxyPassReverse http://localhost:1339/
   ProxyPreserveHost On
   ProxyErrorOverride Off
</Location>

IP 주소를 얻으려면 다음 옵션이 있습니다

console.log(">>>", req.ip);// this works fine for me returned a valid ip address 
console.log(">>>", req.headers['x-forwarded-for'] );// returned a valid IP address 
console.log(">>>", req.headers['X-Real-IP'] ); // did not work returned undefined 
console.log(">>>", req.connection.remoteAddress );// returned the loopback IP address 

따라서 req.ip 또는 req.headers [ 'x-forwarded-for']를 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top