RProxy

a powerful ruby http proxy server, base on eventmachine

able to run in multi-process like nginx workers

Installation

Add this line to your application's Gemfile:

gem 'r_proxy'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install r_proxy

Usage

Currently only support BSD, Linux and MacOS

Http and Https proxy server

integrated with Redis, if you enable auth then you must provide redis url to let server connect to redis.

e.g: server.set(:redis_url, "redis://@localhost:6379/1")

redis key rule: proxy:username-password

redis value rule: integer string e.g: 1234567

the value describe how many bytes that user can use.

unit: bytes

require 'r_proxy'

server = RProxy::MasterProcess.new

server.set(:host, '127.0.0.1')
server.set(:port, 8080)

# set how many instances process that you want to run.
# master process will looking after those process,
# if any of them exit, will auto re-create new instance.
# if want to quit all, just kill master process.
server.set(:instances, 3)

# if disable_auth is true
# then server will not auth user and password
# server.set(:disable_auth, true)

# if disable unbind cb, then it mean
# server will not decrby usage for user
# server.set(:disable_unbind_cb, true)

# default is true 
server.set(:enable_ssl, true) 

server.set(:callback_url,'http://127.0.0.1:1234')

server.set(:redis_url, "redis://@localhost:6379/1")

server.set(:ssl_private_key, './server_key.txt')
server.set(:ssl_cert, './server_cert.txt')

server.set(:logger, Logger.new(STDOUT))
# logger output like:
# I, [2020-05-08T21:04:00.492477 #86348]  INFO -- : r_proxy @1588935840 process start....
# I, [2020-05-08T21:04:21.534989 #87168]  INFO -- : r_proxy rebuild new instance replace @1588935861....

# call run to start server
server.run!

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/nickoan/r_proxy.