Valentin Bartenev
376d758dd7
PHP: implemented "targets" option.
...
This allows to specify multiple subsequent targets inside PHP applications.
For example:
{
"listeners": {
"*:80": {
"pass": "routes"
}
},
"routes": [
{
"match": {
"uri": "/info"
},
"action": {
"pass": "applications/my_app/phpinfo"
}
},
{
"match": {
"uri": "/hello"
},
"action": {
"pass": "applications/my_app/hello"
}
},
{
"action": {
"pass": "applications/my_app/rest"
}
}
],
"applications": {
"my_app": {
"type": "php",
"targets": {
"phpinfo": {
"script": "phpinfo.php",
"root": "/www/data/admin",
},
"hello": {
"script": "hello.php",
"root": "/www/data/test",
},
"rest": {
"root": "/www/data/example.com",
"index": "index.php"
},
}
}
}
}
2020-05-14 13:15:01 +03:00
Valentin Bartenev
0174c971b5
Configuration: URI encoding in the "pass" option.
...
This is useful to escape "/" in path fragments. For example, in order
to reference the application named "foo/bar":
{
"pass": "applications/foo%2Fbar"
}
2020-05-14 13:15:00 +03:00
Max Romanov
6bda9b5eeb
Using malloc/free for the http fields hash.
...
This is required due to lack of a graceful shutdown: there is a small gap
between the runtime's memory pool release and router process's exit. Thus, a
worker thread may start processing a request between these two operations,
which may result in an http fields hash access and subsequent crash.
To simplify issue reproduction, it makes sense to add a 2 sec sleep before
exit() in nxt_runtime_exit().
2020-04-16 17:09:23 +03:00
Valentin Bartenev
c63b498f94
Implemented "location" option for "return" action.
...
This allows to specify redirects:
{
"action": {
"return": 301,
"location": "https://www.example.com/ "
}
}
2020-03-21 01:39:00 +03:00
Valentin Bartenev
8d727774e3
Implemented "return" action.
...
The "return" action can be used to immediately generate a simple HTTP response
with an arbitrary status:
{
"action": {
"return": 404
}
}
This is especially useful for denying access to specific resources.
2020-03-27 17:22:52 +03:00
Max Romanov
c26fbbe53a
Completing request header buffers to avoid memory leak.
...
Before this fix, only persistent connection request buffers were completed.
This issue was introduced in dc403927ab0b.
2020-03-19 20:43:35 +03:00
Igor Sysoev
7935ea4543
Round robin upstream added.
2020-03-06 18:28:54 +03:00
Valentin Bartenev
a98de7f705
Added a "fallback" option to be used with the "share" action.
...
It allows proceeding to another action if a file isn't available.
An example:
{
"share": "/data/www/",
"fallback": {
"pass": "applications/php"
}
}
In the example above, an attempt is made first to serve a request with
a file from the "/data/www/" directory. If there's no such file, the
request is passed to the "php" application.
Fallback actions may be nested:
{
"share": "/data/www/",
"fallback": {
"share": "/data/cache/",
"fallback": {
"proxy": "http://127.0.0.1:9000 "
}
}
}
2020-03-03 20:37:47 +03:00
Igor Sysoev
02e197e978
Processing inconsistent proxied response length.
...
Keepalive connection is disabled if upstream response length
differs from specified in the "Content-Length" field value.
2019-11-14 16:40:02 +03:00
Igor Sysoev
ddde9c23cf
Initial proxy support.
2019-11-14 16:39:54 +03:00
Igor Sysoev
d4e3951c4d
Using request task.
2019-11-14 16:39:48 +03:00
Igor Sysoev
14e56fe8c8
Replacing pass with action.
2019-11-14 16:39:48 +03:00
Valentin Bartenev
08a8d1510d
Basic support for serving static files.
2019-09-19 02:47:09 +03:00
Igor Sysoev
e2abfaf381
Adding body handler to nxt_http_request_header_send().
2019-08-26 18:29:00 +03:00
Max Romanov
e501c74ddc
Introducing websocket support in router and libunit.
2019-08-20 16:31:53 +03:00
Igor Sysoev
c7210eaa5a
nxt_h1proto_t definition was moved to h1proto implementation.
2019-08-06 15:29:40 +03:00
Igor Sysoev
17bb22a4e4
Refactored HTTP protocol callback table.
2019-08-06 15:29:39 +03:00
Axel Duch
7785c96c1a
Added routing based on request scheme.
...
Scheme matches exact string “http” or “https”.
2019-07-24 13:47:35 +03:00
Igor Sysoev
6a775f58af
Added routing based on cookies.
2019-05-30 15:33:51 +03:00
Igor Sysoev
5fb3daa5af
Added routing based on arguments.
2019-05-30 15:33:51 +03:00
Max Romanov
452ce0789e
Adjusting request schema value according to connection tls state.
...
This closes #223 issue on GitHub.
2019-03-21 13:55:57 +03:00
Alexander Borisov
dccb4cf354
Removed unnecessary abstraction layer.
2019-03-06 15:26:45 +03:00
Igor Sysoev
d4ccaae900
Initial routing implementation.
2019-02-27 16:41:11 +03:00
Valentin Bartenev
2d4697dbbe
Validation and normalization of request host.
2019-02-19 20:25:25 +03:00
Igor Sysoev
bb11e9036f
Fixed memory leak on response body sending failure.
2019-02-18 17:28:55 +03:00
Igor Sysoev
b5d4fc939e
Disabled chunked transfer encoding for 204 responses.
2018-09-28 17:32:02 +03:00
Igor Sysoev
b5d76454ed
Added nginx error 497 response.
2018-09-20 15:05:38 +03:00
Igor Sysoev
69a1169cae
Sending 408 response on idle connection timeout.
2018-07-30 17:05:48 +03:00
Valentin Bartenev
1a52d876f7
Introduced nxt_length() macro.
2018-06-25 16:51:47 +03:00
Igor Sysoev
ff6ca2a82c
Fixed keep-alive hanging after reconfiguration.
2018-05-30 18:46:05 +03:00
Valentin Bartenev
204c394721
Initial access log support.
2018-04-11 18:23:33 +03:00
Igor Sysoev
0a44ac371a
Splitting HTTP processing in more granulate connection states.
2018-04-10 19:30:45 +03:00
Igor Sysoev
fa04c05aa0
HTTP: using r->mem_pool retention counter for response buffers.
2018-04-03 16:28:26 +03:00
Valentin Bartenev
9646772a00
HTTP: the Date response header.
2018-02-12 16:58:40 +03:00
Valentin Bartenev
31f72401d9
Fixed reading of the rest of body, again.
...
The last attempt in ee5f278e8c81 wasn't enough.
2018-02-07 18:17:41 +03:00
Valentin Bartenev
0c38ff0e66
Checking for major HTTP version.
2018-01-15 20:50:20 +03:00
Igor Sysoev
30a83a1159
Using correct pointer and size for memzero operation.
...
Found by Coverity (CID 215689).
2017-12-29 19:42:54 +03:00
Igor Sysoev
dbd7540a04
Removed duplicate declaration.
2017-12-28 20:50:49 +03:00
Igor Sysoev
9a6d3c5775
HTTP keep-alive connections support.
2017-12-28 16:01:06 +03:00