summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_application.h (follow)
AgeCommit message (Collapse)AuthorFilesLines
2020-05-28Added "rootfs" feature.Tiago Natel de Moura1-0/+4
2020-03-09Refactor of process management.Tiago Natel de Moura1-7/+4
The process abstraction has changed to: setup(task, process) start(task, process_data) prefork(task, process, mp) The prefork() occurs in the main process right before fork. The file src/nxt_main_process.c is completely free of process specific logic. The creation of a process now supports a PROCESS_CREATED state. The The setup() function of each process can set its state to either created or ready. If created, a MSG_PROCESS_CREATED is sent to main process, where external setup can be done (required for rootfs under container). The core processes (discovery, controller and router) doesn't need external setup, then they all proceeds to their start() function straight away. In the case of applications, the load of the module happens at the process setup() time and The module's init() function has changed to be the start() of the process. The module API has changed to: setup(task, process, conf) start(task, data) As a direct benefit of the PROCESS_CREATED message, the clone(2) of processes using pid namespaces now doesn't need to create a pipe to make the child block until parent setup uid/gid mappings nor it needs to receive the child pid.
2020-05-14PHP: implemented "targets" option.Valentin Bartenev1-3/+3
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" }, } } } }
2019-12-24Adding "limits/shm" configuration validation and parsing.Max Romanov1-0/+3
2019-09-19Initial applications isolation support using Linux namespaces.Tiago de Bem Natel de Moura1-0/+2
2019-03-06Removed unnecessary abstraction layer.Alexander Borisov1-56/+0
2019-02-28Introducing Java Servlet Container beta.Max Romanov1-0/+12
2019-02-27Fixed processing of SERVER_NAME after 77aad2c142a0.Valentin Bartenev1-1/+1
Previously, the nxt_router_prepare_msg() function expected server host among other headers unmodified. It's not true anymore since normalization of the Host header has been introduced in 77aad2c142a0. The nxt_unit_split_host() function was removed. It didn't work correctly with IPv6 literals. Anyway, after 77aad2c142a0 the port splitting is done in router while Host header processing.
2018-10-09Renamed "go" application type to "external".Valentin Bartenev1-13/+13
There's nothing specific to Go language. This type of application object can be used to run any external application that utilizes libunit API.
2018-08-06Unit application library.Max Romanov1-153/+9
Library now used in all language modules. Old 'nxt_app_*' code removed. See src/test/nxt_unit_app_test.c for usage sample.
2018-07-11Removed unused "nxt_app_header_field_t" structure.Valentin Bartenev1-6/+0
It's not used since 3b77edf46701.
2018-06-25Introduced nxt_length() macro.Valentin Bartenev1-2/+2
2018-06-07PHP: added setting of php.ini configuration file path.Valentin Bartenev1-3/+4
2018-06-06Go: specifying command line arguments to the executable.Valentin Bartenev1-1/+2
This closes #110 issue on GitHub.
2018-05-28Configuration of environment variables for application processes.Valentin Bartenev1-5/+9
2018-05-21Added SERVER_SOFTWARE request meta-variable.Valentin Bartenev1-0/+1
2018-04-05Stopping timed out application process.Max Romanov1-0/+1
2018-04-05Style.Valentin Bartenev1-4/+4
2018-04-04Changed version processing for modules.Alexander Borisov1-1/+1
2018-04-04Style: capitalized letters in hexadecimal literals.Valentin Bartenev1-1/+1
2018-03-21Added Ruby support.Alexander Borisov1-1/+9
2018-01-31Added Perl support.Alexander Borisov1-1/+8
2018-01-29Introducing extended app process management.Max Romanov1-2/+0
- Pre-fork 'processes.spare' application processes; - fork more processes to keep 'processes.spare' idle processes; - fork on-demand up to 'processes.max' count; - scale down idle application processes above 'processes.spare' after 'processes.idle_timeout'; - number of concurrently started application processes also limited by 'processes.spare' (or 1, if spare is 0).
2018-01-11Changing relative php scripts paths to real ones.Max Romanov1-1/+1
This is required to run phpMyAdmin.
2017-12-28Removed duplicate declaration.Igor Sysoev1-2/+0
2017-12-28HTTP keep-alive connections support.Igor Sysoev1-12/+6
2017-12-27Introducing application 'atexit' hook.Max Romanov1-0/+1
Finalizing Python interpreter. This closes #65 issue on GitHub.
2017-12-25HTTP parser: reworked header fields handling.Valentin Bartenev1-1/+1
2017-11-29Introducing python virtualenv configuration.Max Romanov1-0/+1
New parameter 'home' for python application allows to configure application-specific virtualenv path. This closes #15 issue on GitHub.
2017-10-10Optimized application type handling.Valentin Bartenev1-2/+1
2017-10-05Improved applications versions handling.Valentin Bartenev1-1/+1
2017-09-15Fixing memory leak of request parse context.Max Romanov1-1/+1
2017-09-06Style fixes.Igor Sysoev1-0/+2
2017-09-05Using CSTRZ mapping type for go executable.Max Romanov1-1/+1
2017-09-05Introducing working_directory directive for applications.Max Romanov1-0/+2
2017-09-01Added SERVER_ADDR parameter for Python and PHP modules.Igor Sysoev1-0/+1
2017-08-31Introduced module compatibility vector.Igor Sysoev1-0/+3
2017-08-17The new module configuration interface.Igor Sysoev1-32/+35
Configuration and building example: ./configure ./configure python ./configure php ./configure go make all or ./configure make nginext ./configure python make python ./configure php make php ./configure go make go Modules configuration options and building examples: ./configure python --module=python2 --config=python2.7-config make python2 ./configure php --module=php7 --config=php7.0-config --lib-path=/usr/local/php7.0 make php7 ./configure go --go=go1.6 --go-path=${HOME}/go1.6 make go1.6
2017-08-11Request body read state implemented.Max Romanov1-3/+15
With specific timeout and buffer size settings.
2017-07-25Fixed building on Solaris by Sun C.Max Romanov1-1/+1
2017-07-18Added application name in process title.Igor Sysoev1-0/+1
2017-07-18Fixed building by Clang.Igor Sysoev1-1/+1
2017-07-18Port allocation and destroy changed. Worker process stop introduced.Max Romanov1-2/+4
2017-07-12New process port exchange changed. READY message type introduced.Max Romanov1-5/+55
Application process start request DATA message from router to master. Master notifies router via NEW_PORT message after worker process become ready.
2017-07-07Router: processing application configuration.Igor Sysoev1-0/+8
2017-07-05Python WSGI: SERVER_NAME, SERVER_PORT fixed, REMOTE_ADDR introduced.Max Romanov1-0/+2
Shortcut: do not iterate over String (or Bytes) return object. Call 'close()' for return object (if present).
2017-07-05Complex target parser copied from NGINX.Max Romanov1-2/+2
nxt_app_request_header_t fields renamed: - 'path' renamed to 'target'. - 'path_no_query' renamed to 'path' and contains parsed value.
2017-06-23Application-side message processing.Max Romanov1-17/+175
Usage on the router side: nxt_app_wmsg_t wmsg; nxt_app_parse_ctx_t parse_ctx; nxt_app_http_req_init(task, &parse_ctx); /* parse incoming request data */ if (nxt_app_http_req_parse(task, &parse_ctx, buf) == NXT_DONE) { /* choose app */ nxt_app = nxt_select_app(... &parse_ctx.r ...); /* find port */ wmsg.port = nxt_get_app_port(... nxt_app ...); wmsg.buf = &wmsg.write; /* fill write message buffer in shared mem */ nxt_app->prepare_msg(task, &parse_ctx.r, &wmsg); /* send message to app for processing */ nxt_port_socket_write(task, wmsg.port, NXT_PORT_MSG_DATA, -1, 0, 0, wmsg.write); }
2017-06-20Using new memory pool implementation.Igor Sysoev1-1/+1
2017-06-14nxt_event_conn_... functions and structures have been renamedIgor Sysoev1-1/+1
to nxt_conn_...