rust 将actix绑定到运行在多个子域上的unix socket +

mnemlml8  于 2023-02-19  发布在  Unix
关注(0)|答案(1)|浏览(155)

我遇到了以下问题。我想在unix socket上安装acix,这是我的首选方式,但如果真的需要,我可以改变它。
假设/etc/server.sock
我的nginx服务器将流量从几个子域重定向到这个套接字现在,我想在同一个应用程序上设置几个域,以避免混乱。
我试过设置tokio::net::UnixListener,并将其传递到listen方法中,我也试过将所有内容传递到一个服务器中,但后来我意识到我无法做到这一点,因为路由会在一些地方冲突。

t2a7ltrp

t2a7ltrp1#

在朋友的帮助下,我设法找到了一个解决方案,我不知道这是否是一个好办法,但:

**1.**我已将文件拆分到不同的路径

Api folder (module)
 \---files for all subdomains
main.rs

**2.**主要是为每个子域设置了服务

async fn main() -> io::Result<()> {
    let server = HttpServer::new(|| {
        App::new()
            .service(api::a_handler())
            .service(api::b_handler())
            .service(api::c_handler())
            .service(api::d_handler())
    });

    server.bind("127.0.0.1:8000")? //I've also switched from unix sockets
        .run()
        .await
}

**3.**然后在每个API文件中我分别设置了处理程序和保护程序

pub fn a_handler() -> Scope {
    web::scope("").guard(guard::Header("host", "a.example.com"))
}

相关问题