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.