Menu

Tree [21d594] master /
 History

HTTPS access


File Date Author Commit
 example-projects 2017-05-06 xfeep xfeep [22b74f] change version to 0.4.5
 nginx-clojure-embed 2017-05-28 xfeep xfeep [7c0e7f] prepare for release v0.4.5
 nginx-jersey 2017-05-06 xfeep xfeep [22b74f] change version to 0.4.5
 nginx-tomcat8 2017-05-06 xfeep xfeep [22b74f] change version to 0.4.5
 src 2017-05-28 xfeep xfeep [ed5b4c] fix some compile warnings
 test 2017-05-28 xfeep xfeep [7c0e7f] prepare for release v0.4.5
 .gitignore 2017-04-22 xfeep xfeep [57e14e] add set-cookie test & update gitignore
 HISTORY.md 2017-05-28 xfeep xfeep [21d594] prepare for release v0.4.5
 LICENSE 2014-02-24 xfeep xfeep [0979ff] support external coroutine class waving configu...
 README.md 2017-05-28 xfeep xfeep [21d594] prepare for release v0.4.5
 logo.png 2014-01-09 xfeep xfeep [6ffea4] add logo
 logo_0.png 2014-07-21 xfeep xfeep [017aed] for #29 Now java ring handlers become first-cl...
 project.clj 2017-05-06 xfeep xfeep [22b74f] change version to 0.4.5

Read Me

Nginx-Clojure

Alt text Nginx-Clojure is a Nginx module for embedding Clojure or Java or Groovy programs, typically those Ring based handlers.

Core Features

The latest release is v0.4.5, more detail changes about it can be found from Release History.

  1. Compatible with Ring and obviously supports those Ring based frameworks, such as Compojure etc.
  2. Http Services by using Clojure / Java / Groovy to write simple handlers for http services.
  3. Nginx Access Handler by Clojure / Java / Groovy
  4. Nginx Header Filter by Clojure / Java / Groovy
  5. NEW: Nginx Body Filter by Clojure / Java / Groovy
  6. Pub/Sub Among Nginx Worker Processes
  7. Shared Map based on shared memory & Shared Map based Ring session store
  8. Support Sente, see this PR
  9. Support Per-message Compression Extensions (PMCEs) for WebSocket
  10. APIs for Embedding Nginx-Clojure into a Standard Clojure/Java/Groovy App
  11. Server Side Websocket
  12. A build-in Jersey container to support java standard RESTful web services (JAX-RS 2.0)
  13. Tomcat 8 embedding support (so servlet 3.1/jsp/sendfile/JSR-356 websocket work within nginx!)
  14. Dynamic proxying by using Clojure / Java / Groovy to write a simple nginx rewrite handler to set var or return errors before proxy pass or content ring handler
  15. Non-blocking coroutine based socket which is Compatible with Java Socket API and works well with largely existing java library such as apache http client, mysql jdbc drivers.
    With this feature one java main thread can handle thousands of connections.
  16. Handle multiple sockets parallel in sub coroutines, e.g. we can invoke two remote services at the same time.
  17. Asynchronous callback API of socket/Channel for some advanced usage
  18. Long Polling & Server Sent Events
  19. Run initialization clojure code when nginx worker starting
  20. Support user defined http request method
  21. Compatible with the Nginx lastest stable version 1.12.0. (Nginx 1.8.x, Nginx 1.6.x, 1.4.x is also ok, older version is not tested and maybe works.)
  22. One of benifits of Nginx is worker processes are automatically restarted by a master process if they crash
  23. Utilizes lazy headers and direct memory operation between Nginx and JVM to fast handle dynamic contents from Clojure or Java code.
  24. Utilizes Nginx zero copy file sending mechanism to fast handle static contents controlled by Clojure or Java code.
  25. Supports Linux x64, Linux x86 32bit, Win32, Win64 and Mac OS X. Freebsd version can also be got from Freebsd ports.

By the way it is very fast, the benchmarks can be found HERE(with wrk2).
Jar Repository
================

Nginx-Clojure has already been published to https://clojars.org/ whose maven repository is

<repository>
  <id>clojars.org</id>
  <url>http://clojars.org/repo</url>
</repository>

After adding clojars repository, you can reference nginx-clojure 0.4.5 , e.g.

Leiningen (clojure, no need to add clojars repository which is a default repository for Leiningen)

[nginx-clojure "0.4.5"]

Gradle (groovy/java)

compile "nginx-clojure:nginx-clojure:0.4.5"

Maven

<dependency>
  <groupId>nginx-clojure</groupId>
  <artifactId>nginx-clojure</artifactId>
  <version>0.4.5</version>
</dependency>

More Documents

More Documents can be found from its web site nginx-clojure.github.io

License

Copyright © 2013-2017 Zhang, Yuexiang (xfeep) and released under the BSD 3-Clause license.

This program uses:
* Re-rooted ASM bytecode engineering library which is distributed under the BSD 3-Clause license
* Modified Continuations Library Written by Matthias Mann is distributed under the BSD 3-Clause license

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.