2013-12-13 19 views
5

Tôi đang cố gắng yêu cầu proxy từ nginx tới kibana (logstash). Tôi có thể truy cập vào bảng điều khiển kibana trên cổng 9292 - Tôi có thể xác nhận rằng dịch vụ đang nghe trên cổng 9292. Tôi có thể proxy thành công từ nginx sang các dịch vụ khác nhưng chỉ thị proxy cho kibana (cổng 9292) không hoạt động - Tôi có thể proxy đến 9200 cho elasticsearch. Bất kỳ ý tưởng về cách khắc phục sự cố này sẽ được đánh giá cao.không thể ủy quyền từ nginx tới kibana

Cập nhật: Tôi đã thử thay đổi thiết lập máy chủ ở phía trên để trỏ tới 0.0.0.0 cũng như địa chỉ máy chủ nhưng không có tùy chọn nào hoạt động. Yêu cầu được chuyển đến máy chủ mặc định.

Một Cập nhật: tôi đã nhận thấy rằng việc loại bỏ các thông số proxy từ file nginx mặc định cho phép tôi để chuyển tiếp yêu cầu đến kibana listneing cổng - tuy nhiên, kibana phàn nàn về việc thiếu "biểu đồ/default.json" mà tôi tôi đoán là do một số thiết lập bị thiếu hoặc bị định cấu hình sai trong nginx.

mặc định (/ 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

đầu tiên của tất cả các bạn nên kiểm tra truy cập trực tiếp, ví dụ cố gắng mở bằng trình duyệt http://127.0.0.1:9292/ (nếu bạn sử dụng máy cục bộ), hoặc curl -v http://127.0.0.1:9292/ – ig0r

+0

truy cập trực tiếp hoạt động - nhưng không phải là thiết lập proxy. –

+0

Tôi thấy hai vấn đề có thể xảy ra. Đầu tiên: có vẻ như một số yêu cầu cần phải đi đến 9292 (cho Kibana) và những người khác cần phải đi đến 9200 (cho ES), nhưng bạn chỉ cần gửi tất cả chúng đến 9292. Thứ hai: Tôi đã không sử dụng Kibana nhúng thiết lập, nhưng tôi biết rằng một thiết lập độc lập yêu cầu thay đổi trong 'config.js' để gửi yêu cầu AJAX đến một cổng khác với 9200, nơi proxy của bạn dường như chỉ nghe trên 84. Tôi có nhiều kinh nghiệm hơn với Apache, nhưng [điều này thiết lập ví dụ] (https://github.com/elasticsearch/kibana/blob/master/sample/nginx.conf) có thể là tham khảo hữu ích. – rutter

Trả lời

6

Vấn đề có vẻ là

proxy_pass http://your-logstash-host; 

Nếu bạn nhìn vào các bản ghi trong LogStash web của bạn, bạn sẽ xem "WARN -: tấn công ngăn chặn bởi Rack :: Protection :: JsonCsrf"

Có một số bảo mật tích hợp, mà tôi không quen thuộc, được cung cấp bởi rack-bảo vệ để ngăn chặn các cuộc tấn công chia sẻ tài nguyên gốc. Vấn đề là proxy_pass từ Nginx trông giống như một cuộc tấn công CORS để bảo vệ rack ruby.

CHỈNH SỬA:

Như đã nêu trước đây, mô-đun Rack :: Protection :: CSRF là công cụ đưa ra cảnh báo này.

Tôi đã mở mã và chúng ta có thể thấy rõ những gì đang xảy ra:

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 

Vì vậy, đây là yêu cầu nginx cấu hình cần thiết để vượt qua các yêu cầu để Sinatra sẽ chấp nhận chúng:

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

Có, tôi đã thấy điều đó sớm hơn nhưng lại bỏ qua vấn đề này sau một thời gian. Tôi sẽ cập nhật SO khi tôi giải quyết vấn đề. –

+0

hoạt động như mô tả - merci! –

Các vấn đề liên quan