2013-12-13 3 views
5

Я пытаюсь прокси-запросов от nginx до kibana (logstash). Я могу получить доступ к панели управления kibana на порту 9292 - я могу подтвердить, что служба прослушивает порт 9292. Я могу успешно прокси от nginx к другим службам, но прокси-директива для kibana (порт 9292) не работает - я могу прокси-сервер до 9200 для поиска elastics. Любые идеи о том, как устранить эту проблему, будут оценены по достоинству.не может прокси от nginx до kibana

Update: Я попытался изменить настройки сервера в вверх по течению, чтобы указать на 0.0.0.0, а также адрес сервера, но ни один из вариантов работы. Запрос перенаправляется на сервер по умолчанию.

Другой Update: Я заметил, что удаление параметров прокси-сервера из файла Nginx по умолчанию позволяет мне направить запрос на kibana listneing порт - однако, kibana жалуется на отсутствующие «приборных панелей/default.json», который я я предполагаю, что это связано с отсутствием или неправильной настройкой в ​​nginx.

по умолчанию (/ и т.д./Nginx/сайты-доступные)

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

первый из всех вы должны проверить прямой доступ, например, попробуйте открыть с браузером http://127.0.0.1:9292/ (если вы используете локальную машину) или curl -v http://127.0.0.1:9292/ – ig0r

+0

прямой доступ работает, но не настройка прокси. –

+0

Я вижу две возможные проблемы. Во-первых: похоже, что некоторые запросы должны быть отправлены на 9292 (для Kibana), а другим нужно перейти на 9200 (для ES), но вы просто отправляете все их на 9292. Второе: я не использовал встроенную Kibana но я знаю, что для автономной настройки требуется изменение в 'config.js' для прямого запроса AJAX на порт, отличный от 9200, где ваш прокси-сервер, похоже, только прослушивает 84. У меня больше опыта работы с Apache, но [это пример установки] (https://github.com/elasticsearch/kibana/blob/master/sample/nginx.conf) может быть удобной ссылкой. – rutter

ответ

6

Проблема, кажется, быть

proxy_pass http://your-logstash-host; 

Если вы посмотрите на журналы в вашем LogStash Web, вы будете см. «WARN -: атака, предотвращенная с помощью стойки :: Защита :: JsonCsrf»

Существует некоторая встроенная система безопасности, с которой я не знаком, обеспечиваемой стойкой защиты предотвратите атаки с использованием ресурсов Cross-origin. Проблема в том, что proxy_pass от Nginx выглядит как атака CORS для защиты рубиновых стеллажей.

EDIT:

Как уже говорилось ранее, модуль Rack :: Защита :: CSRF это один бросает это предупреждение.

я открыл код, и мы можем ясно видеть, что происходит:

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 

Так вот искомая Nginx конфигурации требуется передать запросы, так что Синатра будет принимать их:

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

Да, я видел это раньше, но через некоторое время бросил взгляд на проблему. Я обновлю SO, как только я разрешу проблему. –

+0

работает так, как описано - merci! –

Смежные вопросы