Jetty를 사용하여 Solr을 설정 중입니다. 몇 가지 IP 주소로만 액세스를 제한하고 싶습니다. Jetty를 사용하여이 작업을 수행 할 수 있다는 것은 당연한 것 같지 않습니다. 가능하고 그렇다면 어떻게 될까요?Jetty 및 Solr의 IP 주소 제한
답변
Solr 4.2.1은 Jetty 8.1.8을 사용합니다. Jetty 8 (jonas789에서 언급했듯이)은 .htaccess를 지원하지 않습니다. 대신 IPAccessHandler를 사용합니다. IPAccessHandler는 유용한 설명서가 없습니다. 나는 그것이 작동하도록 꽤 많은 노력을 기울여야 만 했으므로 여기서 업데이트 된 솔루션을 게시하고 있습니다.
IPAccessHandler은 블랙리스트와 화이트리스트를 관리하고, 임의의 범위의 IP를 허용하며, 특정 URI 경로를 각 화이트/블랙리스트 항목에 첨부하는 것을 지원합니다. IPAccessHandler는 또한 HandlerWrapper를 하위 클래스로 분류하여 중요한 것으로 판명되었습니다.
Solr 앱은 여전히 (Lyndsay의 솔루션에서와 같이) WebAppContext에 있지만 WebAppContext는 서버의 첫 번째 처리기 슬롯을 차지하는 ContextHandlerCollection에있는 ContextHandler에 의해 관리됩니다. 앱에 잘못된 IP로부터의 요청을 막으려면 IPAccessHandler를 그 경로의 어딘가에 포장해야합니다. IPAccessHandler가 잘못된 위치에있는 경우 이상하게 작동합니다. 전에 문맥 핸들러 인을 삽입하려했는데 잘못된 기계에 금지 된 403을 부여하고 NullPointerException을 발생 시켰습니다. 추가적인 오류 메시지가 없었습니다. 모든 종류의 말도 안됩니다. 마지막으로 서버 수준에서 ContextHandlerCollection 자체를 래핑하여 작동하도록했습니다.
etc/jetty.xml
으로 이동하여 처리기 섹션으로 스크롤하십시오.
<!-- =========================================================== -->
<!-- Set handler Collection Structure -->
<!-- =========================================================== -->
<Set name="handler">
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<!-- here begins the new stuff -->
<New class="org.eclipse.jetty.server.handler.IPAccessHandler">
<Call name="addWhite">
<Arg>xxx.xxx.xxx.xxx</Arg>
</Call>
<Set name="handler">
<!-- here's where you put what was there before: -->
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Set>
</New>
<!-- here ends the new stuff -->
</Item>
<Item>
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
</Item>
<Item>
<New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
</Item>
</Array>
</Set>
</New>
</Set>
자료 :
나는 그것을 시도했다. 그것은 완벽하게 작동합니다! 그것은 당신이 사용하는 호스트가 아닌 다른 호스트에서 사용되는'클라이언트'에'solr admin'과 &에 대한 접근을 차단합니다. – h4k1m
나는이 동일한 해결책에 독자적으로 도착한다; 나는 이것을 처음으로 찾지 못했다. 참고로이 IPAccessHandler는 IPv4에서만 작동합니다 - 버그/제한 사항입니다. 따라서 Java를 시작할 때'-Djava.net.preferIPv4Stack = true'를 전달하십시오. 제안 된 규칙을 찾는 사람들은 다음과 같습니다.
해결책을 찾았습니다.
먼저 example/webapps 폴더에서 solr.war의 내용을 추출하십시오. 예에서
<Limit>
satisfy all
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Limit>
의/etc/편집 jetty.xml의 파일 및 의견 : 다음을 포함하는 (방금 추출 된 하나) 다음의 .htaccess라는 파일을 생성하고 예/웹 어플리케이션/SOLR 폴더에 넣습니다 org.mortbay.jetty.deployer.WebAppDeployer 부분을 제거하십시오. 그리고 마지막으로 (하나 아직 존재하지 않는 경우) 예 /라는 맥락에서 폴더를 만들고이를 포함에 solr.xml라는 파일을 추가합니다
<Configure id="solr" class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/webapps/solr</Set>
<Set name="contextPath">/solr</Set>
<Call name="setSecurityHandler">
<Arg>
<New class="org.mortbay.jetty.security.HTAccessHandler">
<Set name="protegee">
<Ref id="solr"/>
</Set>
</New>
</Arg>
</Call>
</Configure>
를 그런 다음 새로운 보안 SOLR를 시작합니다!
다른 사람들에게는 eclipse에서 호스팅되는 최신 버전의 Jetty에서는 작동하지 않습니다. 기본적으로 더 이상 HTAccessHandler가 없습니다. 참조 : http://jetty.4.n6.nabble.com/jira-Created-JETTY-962-Clean-room-implementation-of-org-mortbay-jetty-securtiy-HTAccessHandler-td41205.html – jonas789
- 1. Django 및 IP 제한
- 2. IP 주소 및 Datagridview 컨트롤
- 3. IIS 7.5 IP 주소 제한 작동하지 않습니다.
- 4. Jetty에서 특정 IP 주소 차단하기
- 5. IIS 7 IP 주소 및 도메인 제한 - 모두 거부
- 6. MAC 주소 (IP 주소 :
- 7. 프록시 IP 주소 뒤의 추적 IP 주소
- 8. IP 주소 받기 및 저장하기
- 9. 보안 문자 및 IP 주소
- 10. 소켓 및 다중 IP 주소
- 11. GetExtendedUdpTable 및 원격 IP 주소
- 12. SSDP 및 인터페이스 IP 주소
- 13. IP 주소
- 14. 클라이언트의 IP 주소/MAC 주소
- 15. IP 주소 범위/도메인별로 웹 사이트에 대한 액세스 제한
- 16. Grep 관련 IP 주소
- 17. Python에서 IP 주소 추적
- 18. IPv6의 IP 제한 속도/금지
- 19. fastcgi를 사용하여 장고 프로젝트로 lighttp에서 IP 주소 액세스 제한
- 20. JBoss 바인딩 IP 주소
- 21. HttpModule의 IP 주소 차단
- 22. (IP 주소 파라미터)
- 23. IP 주소 차단
- 24. 클라이언트 정보 수집 (IP 주소 및 MAC 주소)
- 25. 내 라우터에 연결된 모든 MAC 주소 목록 및 IP 주소
- 26. Erlang에서 들어오는 TCP/IP 연결의 IP 주소 및 포트 확인
- 27. IP 주소 목록에서 IP 주소 범위를 찾는 방법
- 28. 두 IP 주소 사이의 IP 주소 목록 얻기
- 29. GEOIP 및 컴퓨터 IP 주소 받기?
- 30. 클라이언트 및 서버의 IP 주소 검색
I을 다음과 같이 기존 ContextHandlerCollection 항목을 포장 커스텀 핸들러 나 필터를 작성하지 않고 직접 할 수 없다고 생각합니다. 어쨌든, 당신은 아파치 같은 다른 웹 서버 뒤에 부두를 넣을 수 있습니다. – Chewie