Valentin Bartenev
2348229dc7
PHP: populating PHP_AUTH_* server variables.
...
This closes #498 issue on GitHub.
2020-12-08 01:59:46 +03:00
Axel Duch
e3af18834d
Router: matching regular expressions support.
2020-11-17 15:03:30 +00:00
Valentin Bartenev
93146616cf
Basic variables support.
2020-08-13 02:46:54 +03:00
Max Romanov
09685e2b41
Responding with error in case of first process start failure.
...
After shared application port introducing, request queue in router was
removed and requests may stuck forever waiting for another process start.
2020-08-12 15:25:29 +03:00
Igor Sysoev
65799c7252
Upstream chunked transfer encoding support.
2020-06-23 14:16:45 +03:00
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