class Racknga::Middleware::NginxRawURI
NOTE: This is a middleware that restores the unprocessed URI client requests as is. Usually, nginx-passenger stack unescapes percent encoding in URI and resolve relative paths (ie “.” and “..”). Most of time, processed URI isn’t program. However, if you want to distinguish %2F (ie “/”) from “/”, it is.
Passenger 3.x or later is required.
Use this with following nginx configuration:
... { ... passenger_set_cgi_param HTTP_X_RAW_REQUEST_URI $request_uri; }
Usage:
require "racknga" use Racknga::Middleware::NginxRawURI run YourApplication
Constants
- RAW_REQUEST_URI_HEADER_NAME
Public Class Methods
new(application)
click to toggle source
# File lib/racknga/middleware/nginx_raw_uri.rb, line 42 def initialize(application) @application = application end
Public Instance Methods
call(environment)
click to toggle source
For Rack.
# File lib/racknga/middleware/nginx_raw_uri.rb, line 47 def call(environment) raw_uri = environment[RAW_REQUEST_URI_HEADER_NAME] if raw_uri restore_raw_uri(environment, raw_uri) end @application.call(environment) end
Private Instance Methods
restore_raw_uri(environment, raw_uri)
click to toggle source
# File lib/racknga/middleware/nginx_raw_uri.rb, line 58 def restore_raw_uri(environment, raw_uri) environment["PATH_INFO"] = raw_uri.split("?").first environment["REQUEST_URI"] = raw_uri end