2009-06-12 34 views
8

EDIT - giải pháp tôi đã đăng bên dưới có thể áp dụng cho bất kỳ máy chủ nào (Nginx/Apache/bất kỳ thứ gì khác), vì tiêu đề này được đặt trong chính Rails.Làm cách nào để loại bỏ tiêu đề "X-Runtime" khỏi Nginx/Hành khách?


Bất cứ ai biết nơi "X-Runtime" tiêu đề có thể được loại bỏ trong Nginx & hành khách?

Tôi đã grepped các tập tin nguồn và chưa tìm thấy bất cứ điều gì được nêu ra, nhưng tôi muốn thoát khỏi nó vì an ninh vì nó là một dấu hiệu của Rails.

+0

Tôi chắc rằng X-Runtime không được thiết lập bởi nginx. Tôi đề nghị bạn kiểm tra các nguồn hành khách. –

+0

Tôi grepped cả hai nguồn trước khi đặt câu hỏi nhưng không thấy bất cứ điều gì trong cả hai. – fig

Trả lời

7

Hóa đơn không được đặt trong Nginx hoặc Hành khách.

Đó là trong benchmarking.rb trong /gems/actionpack-2.3.2/lib/action_controller/, dòng 90.

1

Sau đây là dành cho Apache. Tôi đã không đọc câu hỏi một cách chính xác. :)

Bật mô-đun tiêu đề, mod_headers, và thêm dòng sau vào cấu hình của Apache

Header always unset "X-Runtime" 

Có lẽ bạn cũng muốn loại bỏ các X-Powered-By tiêu đề để thêm dòng sau quá.

Header always unset "X-Powered-By" 
+0

Điều này thực sự là Nginx thay vì Apache - cảm ơn mặc dù :) – fig

+0

Ah, rất tiếc! :) Lỗi của tôi. – toholio

3

Trong Apache bạn có thể sử dụng mod_headers để loại bỏ bất kỳ tiêu đề từ phản ứng (hoặc theo yêu cầu cho điều đó vấn đề).

Để loại bỏ các tiêu đề bạn cần phải kích hoạt module:

# a2enmod headers 

Sau đó, bạn có thể sử dụng tùy chọn unset fo chỉ thị Header để bỏ đặt chúng:

Header unset X-Runtime 
Header unset X-Powered-By 

Chỉ thị này có thể được sử dụng cả hai ở cấp độ toàn cầu và cho máy chủ ảo đơn lẻ

5

Tôi biết đó là câu hỏi cũ nhưng vì vấn đề vẫn tồn tại và nhiều trang web vẫn tiếp xúc với hành khách và nginx phiên bản tôi đưa ra câu trả lời hoạt động rất tốt cho tôi. Giải pháp tương tự áp dụng cho tiêu đề X-Runtime.

Chỉ cần cài đặt bên thứ ba ngx_headers_more: http://github.com/agentzh/headers-more-nginx-module (bạn phải xây dựng lại từ nguồn). Thêm vào cấu hình của bạn (tôi đã tạo /etc/nginx/conf.d/security.conf cho nó): server_tokens off; more_clear_headers 'Server' 'X-Powered-By' 'X-Runtime';

3

Đối với những ai vẫn còn ngại về vấn đề này, tôi tin rằng cách đơn giản nhất và chính xác nhất để làm điều đó là trong config/application.rb, bằng cách thêm những điều sau đây:

config.middleware.delete(Rack::Runtime) 

Tất cả các phương pháp khác dường như không vô hiệu hóa tiêu đề như lọc nó khỏi đầu ra. Đây là cho rails4, không chắc chắn nếu nó áp dụng cho các phiên bản khác.

Cập nhật:

Các mã sau đây trong một tập tin khởi tạo có thể mạnh mẽ hơn như sự tồn tại của rack :: Runtime middleware có thể được đảm nhận bởi một số thành phần khác.

Rails.application.config.middleware.delete(Rack::Runtime) 
+0

Điều này đã cho tôi lỗi này: '' 'Thoát /Users/ryan/.rvm/gems/[email protected]/gems/actionpack-4.1.5/lib/action_dispatch/middleware/stack.rb:125: trong 'assert_index ': Không có phần mềm trung gian nào như vậy để chèn vào trước:" Rack :: Runtime "(RuntimeError)' 'trong Rails 4.1.5 – ethicalhack3r

+0

Có lẽ có một số mã cố gắng chèn thứ gì đó trước Rack :: Runtime và giả sử nó nằm trong danh sách phần mềm trung gian. Bạn có thể thử điều này thay vì trong một tập tin initializer, mà nên sidestep vấn đề: 'Rails.application.config.middleware.delete (Rack :: Runtime)' – petercai

+0

Điều đó làm việc, cảm ơn bạn! :) – ethicalhack3r

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