Commit graph

271 commits

Author SHA1 Message Date
Andrei Zeliankou
6e79da4730 Docs: njs (lowercase) is more preferred way to mention 2024-04-10 13:30:02 +01:00
Andrei Zeliankou
9993814d14 NJS: loader should be registered using njs_vm_set_module_loader()
This change makes NJS module incompatible with NJS older than 0.8.3.
Therefore, the configuration version check has been adjusted accordingly.

This change was introduced in NJS 0.8.3 here:
<https://hg.nginx.com/njs/rev/ad1a7ad3c715>
2024-03-12 16:56:11 +00:00
Andrei Zeliankou
e67d743328 Version bump 2024-02-27 12:24:44 +00:00
Andrei Zeliankou
088117008c Added version 1.32.0 CHANGES 2024-02-27 12:24:44 +00:00
Andrei Zeliankou
4d25c61224 Edited changes.xml for the 1.32.0 release 2024-02-27 12:24:44 +00:00
Andrei Zeliankou
697a585062 Python: bytearray body support for ASGI module.
@filiphanes requested support for bytearray
and memoryview in the request body here:
<https://github.com/nginx/unit/issues/648>

This patch implements bytearray body support only.
Memoryview body still need to be implemented.
2024-02-21 14:06:43 +00:00
Andrei Zeliankou
f71ead5fa5 Updated copyright notice. 2024-02-20 16:08:36 +00:00
Zhidao HONG
33c6c4d4c0 NJS: variable access support
This commit introduces the 'vars' JavaScript object to NJS,
enabling direct access to native variables such as $uri and $arg_foo.
The syntax is `${vars.var_name}` or `${'vars[var_name]'}`.

For example:
    {
        "action": {
            "share": "`/www/html${vars.uri}`"
        }
    }
2024-02-20 06:09:23 +08:00
Andrew Clayton
2bd3b41876 Docs: Update man page for new --control-* options
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2024-02-19 13:00:16 +00:00
Gabor Javorszky
fbeb2065b1
fix: Take options as well as requestListener (#1091)
* Take options as well as requestListener

Unit-http have not kept up with the signature of nodejs's http package
development. Nodejs allows an optional `options` object to be passed to
the `createServer` function, we didn't. This resulted in function
signature errors when user code that did make use of the options arg
tried to call unit's replaced function.

This change changes the signature to be more in line with how nodejs
does it discarding it and printing a message to stdout.

* Add test file to start node application with options

* Add changes to docs/changes.xml

Closes: https://github.com/nginx/unit/issues/1043
2024-02-14 18:16:01 +00:00
Konstantin Pavlov
3a2687bb71 Packages: added Ubuntu 23.10 "mantic" support. 2024-02-09 14:31:36 -08:00
Zhidao HONG
dcbff27d9b Docs: Update changes.xml for conditional access logging 2024-01-29 21:10:31 +08:00
Andrei Zeliankou
6452ca111c Node.js: fixed "httpVersion" variable format
According to the Node.js documenation this variable
should only include numbering scheme.

Thanks to @dbit-xia.

Closes: https://github.com/nginx/unit/issues/1085
2024-01-26 15:17:00 +00:00
Andrei Zeliankou
1443d623d4 Node.js: ServerResponse.flushHeaders() implemented.
This closes #1006 issue on GitHub.

Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
2023-11-17 17:27:31 +00:00
Andrei Zeliankou
a88e857b5b Var: $request_id variable.
This variable contains a string that is formed using random data and
can be used as a unique request identifier.

This closes #714 issue on GitHub.
2023-11-08 17:34:59 +00:00
Andrei Zeliankou
822303e23c Version bump. 2023-10-26 14:26:53 +01:00
Andrei Zeliankou
6736841acc Added version 1.31.1 CHANGES. 2023-10-19 11:44:18 +01:00
Andrei Zeliankou
f5d2088a5c Edited changes.xml for the 1.31.1 release. 2023-10-19 11:42:05 +01:00
Andrei Zeliankou
b47415fb72 Prepearing for 1.31.1 release. 2023-10-19 11:41:25 +01:00
Andrei Zeliankou
c433a3c914 Rewrite and response headers mentioned in OpenAPI. 2023-10-11 15:21:09 +01:00
Andrei Zeliankou
37b0f34fb5 Proxy mentioned in OpenAPI. 2023-10-04 12:53:03 +01:00
Andrei Zeliankou
44f3886456 Version bump. 2023-09-04 12:03:39 +01:00
Andrei Zeliankou
13ee1d725c Added version 1.31.0 CHANGES. 2023-08-28 17:51:45 +01:00
Andrei Zeliankou
4c0d0123ab Mention WebAssembly application module in changes.xml.
Also separate header variables and "response_headers" option features.
2023-08-28 17:33:26 +01:00
Andrei Zeliankou
989e8cd9c8 Edited changes.xml for the 1.31.0 release. 2023-08-22 11:03:02 +01:00
Konstantin Pavlov
1a31863f82 Docs: added changelogs for unit-wasm. 2023-08-22 14:55:10 -07:00
Zhidao HONG
a28bef097c HTTP: controlling response headers support. 2023-08-09 14:37:16 +08:00
Zhidao HONG
458722df55 Var: supported HTTP response header variables.
This commit adds the variable $response_header_NAME.
2023-07-01 12:18:22 +08:00
Zhidao HONG
18d3637e4b NJS: supported 0.8.0. 2023-07-11 09:30:50 +08:00
Zhidao HONG
a378f6aa31 HTTP: fixed variable caching.
When a variable is accessed in the Unit configuration, the value is cached.
This was useful prior to the URI rewrite feature, but now that the URI (more
precisely, the request target) can be rewritten, the contents of the variable
$uri (which contains the path part of the request target, and is decoded)
should not be cached anymore, or at least the cached value should be invalidated
after a URI rewrite.

Example:

{
	"rewrite": "/prefix$uri",
	"share": "$uri"
}

For a request line like GET /foo?bar=baz HTTP/1.1\r\n, the expected file
served in the response would be /prefix/foo, but due to the caching issue,
Unit currently serves /foo.
2023-05-25 00:27:55 +08:00
Andrei Zeliankou
71f8c58f7f Updated copyright notice. 2023-05-24 16:27:24 +01:00
Andrei Zeliankou
3f655cbd07 Version bump. 2023-05-24 16:24:42 +01:00
Artem Konev
51de0db7f5 Added the initial version of the OpenAPI specification. 2023-05-10 20:57:42 +01:00
Andrei Zeliankou
03718e0bdf Added version 1.30.0 CHANGES. 2023-05-10 16:53:01 +01:00
Andrei Zeliankou
ec275200f7 Edited "changes.xml" for the 1.30.0 release. 2023-05-10 16:07:25 +01:00
Konstantin Pavlov
7a77f48a25 Packages: added Ubuntu 23.04 "lunar" support. 2023-05-03 16:13:36 -07:00
Zhidao HONG
a3c3a29493 NJS: supported loadable modules. 2023-05-08 16:00:25 +08:00
Zhidao HONG
14d6d97bac HTTP: added basic URI rewrite.
This commit introduced the basic URI rewrite. It allows users to change request URI. Note the "rewrite" option ignores the contained query if any and the query from the request is preserverd.
An example:
"routes": [
    {
        "match": {
            "uri": "/v1/test"
        },
        "action": {
            "return": 200
        }
    },
    {
        "action": {
            "rewrite": "/v1$uri",
            "pass": "routes"
        }
    }
]

Reviewed-by: Alejandro Colomar <alx@nginx.com>
2023-04-20 23:20:41 +08:00
Alejandro Colomar
8843e30e82 Docs: removed incorrect Pp call in unitd.8.
Pp is used to separate paragraphs, not to introduce them.  A Pp macro
call right after Sh is wrong, and it is ignored by the formatter, which
reports a warning about it.

Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-05-08 18:07:22 +02:00
Alejandro Colomar
7417987923 Docs: using appropriate mdoc(7) macros for URIs in unitd.8.
Reviewed-by: Artem Konev <a.konev@f5.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-05-08 17:47:28 +02:00
Alejandro Colomar
8e849db4e6 Docs: changed Authors section to Copyright section in unitd.8.
The Authors section is meant to list the main authors.  However, the
section only contained the copyright notice, so the Copyright section
seems more appropriate.  While we change that, it makes sense to also
specify the license, and update the copyright year.

Reviewed-by: Liam Crilly <liam@nginx.com>
Reviewed-by: Artem Konev <a.konev@f5.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-05-08 17:47:28 +02:00
Alejandro Colomar
f994b232ff Docs: updated unitd.8 date.
We've applied significant changes to the page, so let's update the date.
While we're at it, let's change it to use ISO 8601 format for the date.

Reviewed-by: Artem Konev <a.konev@f5.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-05-08 17:47:28 +02:00
Alejandro Colomar
3d76bc5996 Docs: setting the project name in unitd.8.
Not setting it produces the default value of 'BSD' or 'GNU', depending
on the software formatting the manual page.  We're neither, so let's
specify our project name.  See groff_mdoc(7).  While mandoc_mdoc(7)
formally says that .Os is only for the operating system, and not for the
package name, that's an oversimplification, and only meant for software
inherent to the OS.  For portable software, mandoc(1)'s (and OpenBSD's)
maintainer Ingo Schwarze agreed that it is more sensible to specify the
project name (and optionally, the version).

Reviewed-by: Artem Konev <a.konev@f5.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-05-08 17:47:28 +02:00
Alejandro Colomar
c2bb129e47 Docs: documenting the renamed directory flags in unitd.8.
Reviewed-by: Artem Konev <a.konev@f5.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-05-08 17:47:28 +02:00
Alejandro Colomar
7fdd5b035f Docs: not using shouty caps in unitd.8.
There was a recent unanimous agreement by maintainers of groff, mandoc,
the Linux man-pages, and other relevant programmers, that manual pages
should not use uppercase unnecessarily.  Use of uppercase in the title
and in the section's titles dates from before one could use bold,
italics, and other such formatting, so that it was the way of giving
more importance to certain parts of a page.  Nowadays, we use bold, so
uppercase is unnecessary.

Moreover, using uppercase in the title is bad, since it removes
information.  If we keep the exact casing used in the program (or
function) name, we provide more information.  And anyway, if users want
to read in uppercase, they can program certain mdoc(7) or man(7) macros
to transform their arguments into uppercase.  This could be done via
</etc/groff/mdoc.local> and </etc/groff/man.local>.

There's a plan of transforming OpenBSD pages and the Linux man-pages to
stop using uppercase.  Other projects may join.  That will likely happen
in the following months.  Let's align with this.

Reviewed-by: Artem Konev <a.konev@f5.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-05-08 17:47:28 +02:00
Alejandro Colomar
147ee8abd6 Docs: removed '-v' from unitd.8.
This short option is not really supported.  Probably it was just a typo.

Reviewed-by: Artem Konev <a.konev@f5.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-05-08 17:47:28 +02:00
Alejandro Colomar
1266eda80c Docs: moved uintd.8 to man8/ subdirectory.
Reviewed-by: Artem Konev <a.konev@f5.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-05-08 17:47:26 +02:00
Alejandro Colomar
0ebce31c92 HTTP: added route logging.
-  Configuration: added "/config/settings/http/log_route".

   Type: bool
   Default: false

   This adds configurability to the error log.  It allows enabling and
   disabling logs related to how the router performs selection of the
   routes.

-  HTTP: logging request line.

   Log level: [notice]

   The request line is essential to understand which logs correspond to
   which request when reading the logs.

-  HTTP: logging route that's been discarded.

   Log level: [info]

-  HTTP: logging route whose action is selected.

   Log level: [notice]

-  HTTP: logging when "fallback" action is taken.

   Log level: [notice]

Closes: <https://github.com/nginx/unit/issues/758>
Link: <https://github.com/nginx/unit/pull/824>
Link: <https://github.com/nginx/unit/pull/839>
Suggested-by: Timo Stark <t.stark@nginx.com>
Suggested-by: Mark L Wood-Patrick <mwoodpatrick@gmail.com>
Suggested-by: Liam Crilly <liam@nginx.com>
Tested-by: Liam Crilly <liam@nginx.com>
Acked-by: Artem Konev <a.konev@f5.com>
Cc: Andrew Clayton <a.clayton@nginx.com>
Cc: Andrei Zeliankou <zelenkov@nginx.com>
Reviewed-by: Zhidao Hong <z.hong@f5.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2023-03-21 13:02:38 +01:00
Andrei Zeliankou
814815a3c5 Merged with the 1.29 branch. 2023-03-01 18:25:52 +00:00
Andrei Zeliankou
32f9c3d6f9 Added version 1.29.1 CHANGES. 2023-02-28 16:16:27 +00:00