Konfiguruję Solr za pomocą Mola. Chciałbym ograniczyć dostęp tylko do kilku adresów IP. Nie wydaje się od razu oczywiste, że można to zrobić za pomocą Mola. Czy to możliwe, a jeśli tak, to w jaki sposób?Ograniczanie adresów IP dla Jetty i Solr
Odpowiedz
Solr 4.2.1 używa Mola 8.1.8. Molo 8 (jak zauważył jonas789) nie obsługuje .htaccess. Zamiast tego używa IPAccessHandler, który nie ma dobrej dostępnej dokumentacji. Musiałem się z tym trochę pogodzić, żeby to działało, więc zamieszczam tutaj zaktualizowane rozwiązanie.
IPAccessHandler zarządza czarną listą i białą listą, akceptuje dowolne zakresy adresów IP oraz obsługuje dołączanie określonych ścieżek URI do każdego wpisu white/black -list. IPAccessHandler również podklasy HandlerWrapper, które okazują się ważne.
Aplikacja solr nadal żyje w WebAppContext (podobnie jak w rozwiązaniu Lyndsaya), ale WebAppContext jest teraz zarządzany przez ContextHandler, który znajduje się w ContextHandlerCollection zajmując gniazdo pierwszego manipulatora na serwerze. Aby powstrzymać żądania od niewłaściwego adresu IP przed dotarciem do aplikacji, musimy umieścić ją wewnątrz IPAccessHandler gdzieś wzdłuż tej ścieżki. IPAccessHandler zachowuje się dziwnie, jeśli jest w niewłaściwym miejscu: Próbowałem wstawić go przed do obsługi kontekstu i dało 403 Zabronione na niewłaściwe maszyny, rzucił napad złości NullPointerException bez dodatkowych komunikatów o błędach, wszelkiego rodzaju nonsens. W końcu udało mi się to osiągnąć poprzez zawinięcie samej ContextHandlerCollection na poziomie serwera.
Przejdź do etc/jetty.xml
i przejdź do sekcji obsługi. Następnie zawinąć istniejący element ContextHandlerCollection następująco:
<!-- =========================================================== -->
<!-- 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>
Zasoby:
Próbowałem go i działa idealnie! Blokuje dostęp do 'solr admin' i' client' używanego z innych hostów niż ten, z którego korzystasz. – h4k1m
I niezależnie przybywa do tego samego rozwiązania; Nie znalazłem tego pierwszy. FYI to IPAccessHandler działa tylko z IPv4 - jest to błąd/ograniczenie. Dlatego przy uruchamianiu Java przepuść: '-Djava.net.preferIPv4Stack = true'. A dla tych, którzy szukają sugerowanych zasad, moje wygląda następująco:
Znalazłem rozwiązanie.
Najpierw wyodrębnij zawartość solr.war w folderze example/webapps. Następnie należy utworzyć plik o nazwie .htaccess i umieścić go na przykład/webapps/folderu solr (ten, który właśnie wyodrębniony) zawierający następujące:
<Limit>
satisfy all
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Limit>
Na przykład edytować plik/etc/jetty.xml i komentarz część org.mortbay.jetty.deployer.WebAppDeployer. Wreszcie utworzyć folder na przykład/zwanych kontekstach (jeśli jeszcze nie istnieje) i dodać plik o nazwie solr.xml do niego zawierający:
<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>
następnie uruchomić nową bezpieczną Solr!
Dla innych, to nie zadziała w nowszych wersjach Jetty hostowanych na Eclipse. Zasadniczo nie ma już HTAccessHandler. Odniesienia: http://jetty.4.n6.nabble.com/jira-Created-JETTY-962-Clean-room-implementation-of-org-mortbay-jetty-securtiy-HTAccessHandler-td41205.html – jonas789
- 1. Ograniczanie/blokowanie adresów IP w IPv6
- 2. Uruchamianie Solr z Jetty
- 3. Indeksowanie i kwerendowanie adresów URL w Solr
- 4. Techniki wykrywania lokalizacji dla adresów IP
- 5. indeksowane wahała algorytm wyszukiwania dla adresów IP
- 6. prywatne zakresy adresów IP
- 7. Dns.GetHostEntry zwraca wiele adresów IP
- 8. Analizator adresów IP w JavaScript
- 9. Ograniczanie wyjścia z MoreLikeThis w Solr
- 10. Sortowanie adresów IP w vim
- 11. Różnica w adresach Ethernet i bezprzewodowych adresów IP?
- 12. szyn: dowiedzieć się, czy IP jest w zakresie adresów IP
- 13. Ustawianie białej listy adresów IP Apache
- 14. Wiele adresów IP + domen + certyfikaty SSL dla jednej witryny internetowej
- 15. Jak skonfigurować postgresql postgresql.conf listen_addresses dla wielu adresów IP
- 16. Konwersja adresów NSNetservice [], aby adres IP ciąg
- 17. Obliczanie zakresu adresów IP z maski podsieci
- 18. Klonowanie i przekazywanie pakietów na wiele adresów IP
- 19. C#: Wyliczanie adresów IP w zakresie
- 20. Problemy z Jetty Classpath
- 21. Serwer Jetty dla Windows
- 22. Jak przeglądać dzienniki dostępu do serwera dla unikalnych adresów IP i określonej strony?
- 23. Pakiet R dla kodu pocztowego i innych danych geograficznych z adresów IP?
- 24. Ograniczanie wskaźników i wstawianie
- 25. Zrozumienie użycia pamięci dla Jetty
- 26. Typ danych pola PostgreSQL dla adresów IPv4
- 27. Ograniczanie czasu dla funkcji wieloprocesowej
- 28. Solr dla arabskiego
- 29. Jeśli mój serwer ma wiele adresów IP, w jaki sposób mogę uruchomić skrypt przy użyciu każdego z adresów IP?
- 30. Ograniczanie tempa dla kontrolerów szyn
I myślę, że nie można bezpośrednio, bez pisania niestandardowego programu obsługi lub filtru. W każdym razie możesz umieścić pomost za innym serwerem sieciowym, takim jak Apache. – Chewie