Programmable, asynchronous, event-based reverse proxy for JVM.
Clone or download
mikkokar Merge pull request #315 from HotelsDotCom/feature-styx-1.0-api
Merge Styx 1.0 API improvements back to master
Latest commit 8d60e54 Oct 18, 2018
Permalink
Failed to load latest commit information.
bom New interceptor and routing API for styx - Initial Commit - (#166) May 17, 2018
codequality Improve Javadocs for styx-api module (#271) Sep 10, 2018
components Rename streaming messages (#314) Oct 18, 2018
distribution New interceptor and routing API for styx - Initial Commit - (#166) May 17, 2018
docs Rename streaming messages (#314) Oct 18, 2018
plugin-examples Fix compilation error in ExamplePluginTest.java. (#273) Sep 6, 2018
src/license Fix license headers (#131) Apr 9, 2018
support Rename streaming messages (#314) Oct 18, 2018
system-tests Rename streaming messages (#314) Oct 18, 2018
travis Additional pom properties for custom gpg2 settings for artifacts sign… Mar 27, 2018
.gitignore alobodzki, kvosper, mikkokar: Initial commit. Oct 16, 2017
.travis.yml Maven central publishing profile added (#37) Nov 24, 2017
CHANGELOG.md Fix incorrect changelog for 0.7.10 (#303) Oct 5, 2018
CODE-OF-CONDUCT.md Added code of conduct Nov 1, 2017
CONTRIBUTING.md Fixed image reference to Styx overview diagram. Oct 16, 2017
CONTRIBUTORS.md alobodzki, kvosper, mikkokar: Initial commit. Oct 16, 2017
ISSUE_TEMPLATE.md Create ISSUE_TEMPLATE.md (#31) Nov 20, 2017
LICENSE.txt alobodzki, kvosper, mikkokar: Initial commit. Oct 16, 2017
Makefile Use HttpServerCodec in Styx server Netty pipeline (#175) May 30, 2018
NOTICE alobodzki, kvosper, mikkokar: Initial commit. Oct 16, 2017
README.md README.md: Add short release note about Styx 1.0 API. (#248) Aug 30, 2018
pom.xml A ByteStream abstraction to represent streaming content. (#298) Oct 11, 2018

README.md

STYX

Build Status License Version

Styx is a programmable reverse proxy for JVM (Java Virtual Machine). It can be used as a stand-alone application, or as a platform to build custom networking applications. It is non-blocking, fully asynchronous and event driven therefore very scalable.

Upcoming Release Note

Styx 1.0 will be publicly released soon. The master is now the bleeding edge for Styx 1.0. Styx 0.7 code is available in the styx-0.7 branch which is in maintenance mode (bug fixes only). Follow the Styx Wiki for the latest developments.

Features

Styx Proxies HTTP requests to a configurable set of Backend Services typically a cluster of web servers (multiple origins) or load balancers (e.g. AWS ELB).

Requests are subjected to an interceptor chain (conceptualy a HTTP filter chain), which can respond or modify and pass through the request to the backend services. The interceptor chain can be easily extended by Plugins written in Java.

Styx additional capabilities:

  • Load balancing
  • Origin health checking
  • Retry mechanisms
  • Connection pooling
  • Admin dashboard (inspired and based on Hystrix Dashboard)
  • Performance and system metrics collection and reporting (Graphite compatible)

Most additional features can be extended via the Java Service Provider Interface (SPI) model.

The plugin and the SPI (Service Provider Interface) model enables developers to build custom HTTP applications easily on top of Styx, which takes care of common proxy server related functionality. Developers can then concentrate on the value-add business logic.

Use cases of Styx Plugins

  • Hotels.com - Built authentication, UI rendering, URL redirection and cookie cleaning plugins in front of backend services.

  • Expedia - Built routing and bot detection capabilities on top of Styx. More info here.

  • Homeaway - Built various plugins.

Useful Information

Quick Start

A quick-start guide can be found on our wiki.

User Manual

User guide explains how to run and operate Styx as a standalone application.

Developer Resources

Our Developer guide explains how to build applications on top of Styx. It also explains how to build and run Styx.

If you want to help to contribute to Styx project, please check Contributor guide to find out how to start.

Got a Question?

Contact us via styx-user group.

Links

Dependencies

  • Oracle JDK 8 - It can be built with 1.8.0_45. Earlier maintenance releases may, but are not guaranteed to work.
  • Apache Maven v3
  • Makefile (Optional)- There are fairly many ways of running Styx tests with different Maven profiles. Therefore, the shortcuts for most common usages are compiled into a separate (GNU) Makefile for developer's convenience. To take advantage of these shortcuts, a GNU Make build tool must be installed.

Notice

Not the Styx project that you were expecting to find?

Other open source projects called Styx on GitHub: Github Styx Projects

License

This project is licensed under the Apache License v2.0 - see the LICENSE.txt file for details.

Copyright 2013-2017 Expedia Inc.

Licencing terms for any derived work and dependant libraries are documented in NOTICE files.