2013-12-13 16 views
5

Próbuję proxy żądania od nginx do kibana (logstash). Mogę uzyskać dostęp do tablicy rozdzielczej kibana na porcie 9292 - mogę potwierdzić, że usługa nasłuchuje na porcie 9292. Mogę z powodzeniem dokonać proxy z nginx do innych usług, ale dyrektywa proxy dla kibana (port 9292) nie działa - mogę proxy do 9200 do elastycznego wyszukiwania. Wszelkie pomysły na rozwiązanie tego problemu byłyby mile widziane.nie można proxy z nginx do kibana

Aktualizacja: Próbowałem zmiany konfiguracji serwera w górę do punktu na 0.0.0.0, jak również adres serwera, ale ani opcja działa. Żądanie zostanie przekierowane na domyślny serwer.

Kolejna aktualizacja: Zauważyłem, że usuwając parametry proxy z pliku domyślnego nginx pozwala mi przekazać wniosek do Kibana listneing port - jednak Kibana narzeka na brak „dashboardów/default.json”, co ja zgadywanie jest spowodowane brakującymi lub źle skonfigurowanymi ustawieniami w Nginx.

domyślny (/ etc/nginx/sites-available)

upstream logstash { 
     server 127.0.0.1:9292; ##kibana 
     keepalive 100; 
} 

server { 
     listen 84; 
     listen [::]:84 ipv6only=on; 
     root /var/www/; 
     index index.html index.htm; 
     server_name logstash; 

     ##logging per server 
     access_log /var/log/nginx/logstash/access.log; 
     error_log /var/log/nginx/logstash/error.log; 

     location/{ 
       proxy_redirect off; 
       proxy_set_header X-Real-IP $remote_addr; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
       proxy_set_header Host $host; 
       proxy_pass http://logstash; 
     } 
} 
+0

pierwszy z wszystkich należy sprawdzić bezpośredni dostęp, na przykład spróbuj otworzyć za pomocą przeglądarki http://127.0.0.1:9292/ (jeśli korzystasz z komputera lokalnego), lub curl -v http://127.0.0.1:9292/ – ig0r

+0

bezpośredni dostęp działa - ale nie konfiguracja proxy. –

+0

Widzę dwa możliwe problemy. Po pierwsze: wygląda na to, że niektóre żądania muszą przejść do 9292 (w przypadku Kibana), a inne muszą przejść do 9200 (w przypadku ES), ale przesyłasz je wszystkie do 9292. Po drugie: Nie użyłem wbudowanej wersji Kibana setup, ale wiem, że samodzielna konfiguracja wymagała zmiany w 'config.js', aby skierować żądania AJAX do portu innego niż 9200, gdzie twój serwer proxy wydaje się słuchać tylko na 84. Mam więcej doświadczenia z Apache, ale [to przykładowa konfiguracja] (https://github.com/elasticsearch/kibana/blob/master/sample/nginx.conf) może być przydatnym odnośnikiem. – rutter

Odpowiedz

6

Problem wydaje się być

proxy_pass http://your-logstash-host; 

Jeśli spojrzeć na logach w LogStash Web, będziesz zobacz "WARN -: atak zablokowany przez Rack :: Ochrona :: JsonCsrf"

Istnieje kilka wbudowanych zabezpieczeń, których nie znam, dostarczanych przez ochronę szafy do Zapobiegaj atakom współużytkowania zasobów wzajemnego pochodzenia. Problem polega na tym, że proxy_pass z Nginx wygląda jak atak CORS na ochronę w szafie RACK.

EDIT:

Jak wcześniej wspomniano, moduł :: Rack :: Ochrona CSRF jest jeden rzuca to ostrzeżenie.

mam otwarty kod i możemy jasno zobaczyć, co się dzieje:

def has_vector?(request, headers) 
    return false if request.xhr? 
    return false unless headers['Content-Type'].to_s.split(';', 2).first =~ /^\s*application\/json\s*$/ 
    origin(request.env).nil? and referrer(request.env) != request.host 
end 

Więc tutaj jest wymagane nginx config zobowiązany do przekazania żądania tak, że Sinatra będzie je zaakceptować:

server { 
    listen  80; 
    server_name logstash.frontend.domain.org; 

    location/{ 
     # Proxying all requests from logstash.frontend to logstash.backend 
     proxy_pass http://logstash.backend.domain.org:9292; 
     proxy_set_header X-Real-IP $remote_addr; 

     # Set Referer and Host to prevent CSRF panick by Sinatra 
     proxy_set_header Referer my-host-04; 
     proxy_set_header Host my-host-04.domain.org; 

     # Alternatively to setting the Referer and Host, you could set X-Requested-With 
     #proxy_set_header X-Requested-With XMLHttpRequest; 
    } 
} 
+0

Tak, widziałem to wcześniej, ale po jakimś czasie przestałem się tym zajmować. Zaktualizuję SO po rozwiązaniu problemu. –

+0

działa zgodnie z opisem - merci! –

Powiązane problemy