From 39d35b05bd6adcb551e62eb275ab33c6e3ae5540 Mon Sep 17 00:00:00 2001 From: Victor Nawothnig Date: Tue, 12 Apr 2016 14:55:50 +0200 Subject: [PATCH] Log the remote IP addr of clients behind a proxy. --- railties/lib/rails/application/default_middleware_stack.rb | 2 +- railties/lib/rails/rack/logger.rb | 2 +- railties/test/application/middleware_test.rb | 4 ++-- railties/test/application/rack/logger_test.rb | 6 ++++++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/railties/lib/rails/application/default_middleware_stack.rb b/railties/lib/rails/application/default_middleware_stack.rb index 381e54873024d..8332dc496c879 100644 --- a/railties/lib/rails/application/default_middleware_stack.rb +++ b/railties/lib/rails/application/default_middleware_stack.rb @@ -43,10 +43,10 @@ def build_stack middleware.use ::ActionDispatch::RequestId # Must come after Rack::MethodOverride to properly log overridden methods - middleware.use ::Rails::Rack::Logger, config.log_tags middleware.use ::ActionDispatch::ShowExceptions, show_exceptions_app middleware.use ::ActionDispatch::DebugExceptions, app, config.debug_exception_response_format middleware.use ::ActionDispatch::RemoteIp, config.action_dispatch.ip_spoofing_check, config.action_dispatch.trusted_proxies + middleware.use ::Rails::Rack::Logger, config.log_tags unless config.cache_classes middleware.use ::ActionDispatch::Reloader, app.reloader diff --git a/railties/lib/rails/rack/logger.rb b/railties/lib/rails/rack/logger.rb index b63d3a58d20d9..009703220a12b 100644 --- a/railties/lib/rails/rack/logger.rb +++ b/railties/lib/rails/rack/logger.rb @@ -48,7 +48,7 @@ def started_request_message(request) 'Started %s "%s" for %s at %s' % [ request.request_method, request.filtered_path, - request.ip, + request.remote_ip, Time.now.to_default_s ] end diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb index 5869ff64bc597..0b53896258ddb 100644 --- a/railties/test/application/middleware_test.rb +++ b/railties/test/application/middleware_test.rb @@ -31,10 +31,10 @@ def app "Rack::Runtime", "Rack::MethodOverride", "ActionDispatch::RequestId", - "Rails::Rack::Logger", # must come after Rack::MethodOverride to properly log overridden methods "ActionDispatch::ShowExceptions", "ActionDispatch::DebugExceptions", "ActionDispatch::RemoteIp", + "Rails::Rack::Logger", # must come after Rack::MethodOverride to properly log overridden methods "ActionDispatch::Reloader", "ActionDispatch::Callbacks", "ActiveRecord::Migration::CheckPending", @@ -59,10 +59,10 @@ def app "ActiveSupport::Cache::Strategy::LocalCache", "Rack::Runtime", "ActionDispatch::RequestId", - "Rails::Rack::Logger", # must come after Rack::MethodOverride to properly log overridden methods "ActionDispatch::ShowExceptions", "ActionDispatch::DebugExceptions", "ActionDispatch::RemoteIp", + "Rails::Rack::Logger", # must come after Rack::MethodOverride to properly log overridden methods "ActionDispatch::Reloader", "ActionDispatch::Callbacks", "Rack::Head", diff --git a/railties/test/application/rack/logger_test.rb b/railties/test/application/rack/logger_test.rb index 0082ec9cd2a0b..bdf5417fae806 100644 --- a/railties/test/application/rack/logger_test.rb +++ b/railties/test/application/rack/logger_test.rb @@ -51,6 +51,12 @@ def logs wait assert_match 'Started HEAD "/"', logs end + + test "logger logs correct remote IP address" do + get "/", {}, { 'REMOTE_ADDR' => '127.0.0.1', 'HTTP_X_FORWARDED_FOR' => '1.2.3.4' } + wait + assert_match 'Started GET "/" for 1.2.3.4', logs + end end end end