Giter Club home page Giter Club logo

nginx-rs's Introduction

nginx-rs

crates.io MIT License

Note [Nov 2023] Nginx now provides official Rust support with the ngx crate.

See Nginx's blog post Extending NGINX with Rust (an Alternative to C).

[Feb 2023] I haven't had a chance to work on this recently, but you might be interested in Cloudflare's blog post ROFL with a LOL: rewriting an NGINX module in Rust, which takes some inspiration from this module.

A framework for writing Nginx modules in pure Rust.

This module is in early stages. It lacks documentation and the API is still quite unstable. But it can be used to write simple request handlers for content or access control.

Building Modules

Building modules requires a checkout of the Nginx sources configured for building dynamic modules:

export NGINX_DIR=/path/to/nginx
cd "${NGINX_DIR}"
auto/configure --with-compat

Once Nginx is configured, you can then build your module:

cd /path/to/module
cargo build --release

The resulting .so in target/release can then be loaded using the load_module directive.

Examples

  • hello_world โ€” Demonstrations access control and content handlers

Licence

This project is licensed under the terms of the MIT license.

nginx-rs's People

Contributors

dcoles avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

nginx-rs's Issues

hello world error

Howdy, I've been playing around with your code... it's pretty nifty.

However, I'm unable to get a .so that can be loaded into Nginx.

I updated Cargo.toml to change the crate-type to "cdylib" and I get a nice libhello.so

However, when I try to load it into Nginx, I get the following error: 2021/04/30 17:46:28 [emerg] 21462#21462: dlsym() "modules/lib_hello.so", "ngx_modules" failed (/usr/share/nginx/modules/lib_hello.so: undefined symbol: ngx_modules) in /etc/nginx/modules-enabled/50-mod-hello.conf:1

If you could point me to instructions about how to build and load the module into Nginx, I'd appreciate it.

Thanks!

Request.user_agent will crash when send lot of request

normally, It works well.

http_request_handler!(ngx_http_hello_world_handler, |request: &mut Request| {

    // Ignore client request body if any
    if !request.discard_request_body().is_ok() {
        return HTTP_INTERNAL_SERVER_ERROR.into();
    }

    // Create body
    let user_agent = request.user_agent(); //will crash 
    let uri = request.uri(); 

but if I send too many requests ,It will crash, error.log will output lot error logs as below

2022/05/28 23:03:39 [alert] 18733#0: worker process 20181 exited on signal 11
2022/05/28 23:03:39 [alert] 18733#0: worker process 20182 exited on signal 11
2022/05/28 23:03:39 [alert] 18733#0: worker process 20183 exited on signal 11
2022/05/28 23:03:39 [alert] 18733#0: worker process 20184 exited on signal 11

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.