-
Notifications
You must be signed in to change notification settings - Fork 0
Use Case
Ryo Okubo edited this page Aug 25, 2016
·
8 revisions
- There are some examples on
example/
directory. - You may replace some ATS plugins.
- unified_hello.rb
if server_name == "NGINX"
Server = Nginx
elsif server_name == "Apache"
Server = Apache
elsif server_name == "ApacheTrafficServer"
Server = ATS
end
Server::rputs "Hello #{Server::module_name}/#{Server::module_version} world!"
# mod_mruby => "Hello mod_mruby/0.9.3 world!"
# ngx_mruby => "Hello ngx_mruby/0.0.1 world!"
# ts_mruby => "Hello ts_mruby/0.0.1 world!"
- remap.config
map /test http://127.0.0.1/ @plugin=ts_mruby.so @pparam=etc/trafficserver/unified_hello.rb
- Randomize a target host of ATS origin server.
backends = [
"127.0.0.1:8001",
"127.0.0.1:8002",
"127.0.0.1:8003",
]
upstream = ATS::Upstream.new
upstream.server = backends[rand(backends.length)]
Header rewriting (An alternative of Header Rewrite Plugin)
r = ATS::Request.new
conn = ATS::Connection.new
r.headers_in["X-ATS-Plugin"] = "ts_mruby"
r.headers_in["X-Forwarded-For"] = conn.remote_ip
r.headers_in.delete("Cookie")
Regexp base reverse proxy rule (An alternative of Regex Remap Plugin)
req = ATS::Request.new
path = req.uri + req.args
if path =~ /^\/(ogre.*)\/bad/
ATS::return ATS::HTTP_NOT_FOUND
elsif path =~ /^\/oldurl\/(.*)$/
ATS::redirect 'http://news.example.com/new/' + $1, ATS::HTTP_MOVED_TEMPORARILY
end
Flexible overriding configuratrions (An alternative of Configuration Remap Plugin)
- Enable cache:
records = ATS::Records.new
records.set ATS::Records::TS_CONFIG_HTTP_CACHE_HTTP, 1
- See also TSHttpOverridableConfig about overridable values.
redis = Redis.new '127.0.0.1', 6789
if redis['ts_maint']
body = <<'EOS'
<html>
<head>
<title>Message from your proxy ...</title>
</head>
<body>
<p>Sorry, maintainance mode now ...</p>
</body>
</html>
EOS
ATS::echo body
end
discount = Discount.new("http://kevinburke.bitbucket.org/markdowncss/markdown.css", "Markdown Web page example")
md = <<'EOS'
# Markdown Web page example
* You can write web pages by Markdown format.
* The doc will converted to html when HTTP requests come.
## Requirements
* [mruby-discount](https://github.com/matsumoto-r/mruby-discount)
## Example
* This .rb file is it!
EOS
html = discount.header
html << discount.md2html(md)
html << discount.footer
ATS::rputs html
See https://github.com/syucream/ts_mruby/tree/master/examples/resizer