- New Feature: Coroutine based socket supports unix domain socket
- New Feature: APIs for Embedding Nginx-Clojure into a standard Clojure/Java/Groovy App (issue #86)
- New Feature: Autodetect jvm_path (issue #85)
- New Feature: Support to use annotation to mark a class or method to be suspenable in coroutine context (issue #84)
- Enhancement: Auto send error when meets a non websocket request with
auto_upgrade_ws
is on - Enhancement: Add
websocket-upgrade!
to server channel API - Enhancement: Add
WholeMessageAdapter
to make handling small websocket messages easier. - Bug Fix: NginxHttpServerChannel.write(ByteBuffer buf) does not reset the buffer's position (issue #83)
- Bug Fix: No access to tomcat server 8.24 from nginx-clojure (issue #82)
- Binaries Distribution: Including some java sources for easy debug.
- Build Script: Autodetect JNI header files
- New Feature: Server Side Websocket (issue #73)
- New Feature: A build-in Jersey container to support java standard RESTful web services (JAX-RS 2.0) (issue #74)
- New Feature: Tomcat 8 embedding support (so servlet 3.1/jsp/sendfile/JSR-356 websocket work within nginx!) (issue #67)
- New Feature: Coroutined Based Client Socket Supports to Bind to Specified IP Address (issue #69)
- New Feature: Handler's Property Configuration (issue #66)
- Enhancement: NginxHttpServerChannel can work with Rewrite Handler or Access Handler (issue #79)
- Enhancement: Configurable Write Buffer Size for SSE or Websocket (issue #76)
- Bug Fix: When we do not configure jvm_path proxy_pass will not work (issue #72)
- Bug Fix: nginx worker restart when get the value of header X-Forwarded-For (issue #70)
- Bug Fix: proxy_cache_path causes crash (issue #64)
- Bug Fix: send_timeout does not take effect with NginxHttpServerChannel (issue #78)
- Bug Fix: Waving tool generates wrong wave information of fuzzing classes (issue #80)
- Documents : Release History link in README (issue #68)
- Binaries Distribution: built with The latest stable Nginx v1.8.0 which released at 2015-04-21.
- Discard: Directive
clojure
,clojure_code
are no longer supported, usehandler_type
/content_handler_type
,handler_name
/content_handler_name
,handler_code
/content_handler_code
instead. - Discard: Now
handler_***
can not be used to declare a nginx worker initialization handler, use `jvm_init_handler_*** instead. - New Feature: Supports writing nginx access handler by java/clojure/groovy (issue #53)
- New Feature: Supports writing nginx header filter by java/clojure/groovy (issue #55)
- New Feature: Add new directive
max_balanced_tcp_connections
to make nginx auto set worker_connections. - Enhancement: For Java We can use r.setVariable, r.getVariable now if r is an instance of NginxJavaRequest.
- Deprecated Directives: handler_type, handler_name, handler_code are deprecated and maybe will be removed in the next version, add new directive content_handler_type, content_handler_code, content_handler_code
- New Directives: rewrite_handler_type, access_handler_type, header_filter_type, body_filter_type
- New Feature: Supports nested locations (issue #56)
- Bug Fix : uppercase letters in nginx variable name can not work (issue #54)
- Bug Fix: The first registered handler will not work if there 's a asynchronous reading of request body (issue #51)
- Enhancement:
handlers_lazy_init
can be used to make handler initialized lazily or eagerly (issue #52)
- New Feature: Compiling option for disabling all functions silently when JVM_PATH not configured. (issue #47)
- New Feature: Access request BODY in rewrite handler (issue #49)
- Enhancement : Optimization of encoding String to Nginx temp buffer chain to reduce Java heap memory usage and improve the performance.
- Fix Bug: rewrite handler does not handle write event correctly with thread pool mode or coroutine mode (issue #43)
- Fix Bug: built-in jvm variable #{pno} doesn't work (issue #44)
- Fix Bug: rewrite_handler_name does not work without content handler (issue #45). Thanks Eric Kubacki for finding this bug.
- Fix Bug: rewrite handler does not handle write event correctly with thread pool mode or coroutine mode (issue #43)
- Documents : Correct some inaccuracies and add section about logging in Chapter More about Nginx-Clojure
- Binaries: built with The latest stable Nginx v1.6.2 which released at 2014-09-16.
- New Feature: Reference variables in jvm_options & different jvm debug ports for jvm processes (issue #42)
- New Feature: Server Sent Events(SSE) & Long polling (issue #41, issue #36)
- New Feature: Supports 64-bit JDK on 64-bit Windows (issue #40)
- New Feature: Coroutine based socket supports JDK8 (issue #39)
- New Feature: More easier to archive Sub/Pub services with Broadcast Events to all Nginx workers (issue #39)
- New Feature: Asynchronous Channel a wrapper of asynchronous socket to make the usage easier (issue #37)
- Enhancement: Fix--On Windows a little many write events happen and these events seem useless (issue #35)
- New Feature: Support Groovy - another dynamic jvm language (issue #34)
- Fix bug: Slow Memory Leak for Coroutine based Socket bug (issue #32 )
- Fix bug: Should Clone ThreadLocals for Coroutines (issue #31)
- New Feature: More friendly to java users who maybe know nothing about clojure feature (issue #29)
- Five new nginx directives
handler_type
,handler_name
,handler_code
,rewrite_handler_name
,rewrite_handler_code
. Make Clojure/Java/Groovy handler configurations have the same form. e.g. The old pair of nginx directivesclojure
,clojure_code
is equivalent tohandler_type='clojure'
+handler_code
.
- Fix issue After invoking on coroutine based socket nginx worker will exit and be recreated when network is disabled (issue #26)
- Fix issue PATCH loses the data payload (issue #27)
- Support user defined http request method (issue #28 )
- Fix issue Nginx worker crashes when to fetch http header "authorization" from request (issue #30)
- Fix bug of with Compojure 1.1.5 + Apache Solrj 4.3.0 + httpclient 4.3.2 NPE happens first time then everything is OK (issue #22)
- Verifying option for auto generated waving configurations needed by coroutine based socket (issue #23)
- Support to close coroutine based socket from non-main thread (issue #19)
- Auto generated waving class configurations about Proxy InvocationHandler instance (issue #17 )
- Supports auto turn on thread pool mode when turning on Run Tool Mode feature (issue #16 )
- Fix bug of reading from coroutine based socket inputstream returns 0 when eof, should return -1 (issue #15)
- Handle multiple sockets parallel in sub coroutines, e.g. we can invoke two remote services at the same time feature (issue #14)
- Support nginx rewrite handler to set var before proxy pass (issue #3)
- non-blocking socket based on coroutine and compatible with largely existing java library such as apache http client, mysql jdbc drivers
- asynchronous callback API of socket for some advanced usage
- run initialization clojure code when nginx worker starting
- provide a build-in tool to make setting of coroutine based socket easier
- support Linux 32bit x86 now
- publish binary release compiled with lastes stable nginx 1.6.0 about Linux x64, Linux i586, Win32 & MacOS X
- fix #2 Problems with HTTP Redirect 302
- header names are case-insensitive now.
- publish binary release about Linux x64, Win32 & MacOS X
- Supports InputStream, ISeq & recursive ISeq in Response Body.
- Auto maintains HTTP last-modified header for multiple files in Response Body
- Compitiable with Ring Spec (1.1)
- Supports Java Thread Pool for handle request
- Fast Static File Service