当前位置:首页 > CN2资讯 > 正文内容

rustdesk 服务器怎么填写 rust服务器选择

12小时前CN2资讯

react ssr

继续创建增强的服务器端渲染实现。 在第一部分中,我们准备了带有SSR脚本的ReactJS应用程序,该脚本可让我们为Web服务器选择最佳技术。

为SSR Web服务器选择技术堆栈

Rust是当今安全性和高速性最强大的组合(您可以在此处查看原因-www.rust-lang.org )。 另外,根据TechEmpower Framework Benchmark ,Actix-web框架是最快的。

因此,让我们对强制Web服务器使用最佳技术。

设置Rust应用

在计算机上设置Rust很容易-只需转到rustup.rs网站并安装rustup CLI。

下一步是初始化一个新的应用程序。 货物,Rust包管理器可以提供帮助:在存储库文件夹中运行cargo init 。

每个包装的Cargo.toml文件称为清单。 它包含设置和依赖性。 新的应该是这样的:

[package] name = "rust-ssr-webserver" version = "0.1.0" authors = [ "Alex Tkachuk <[email protected]>" ] edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies]

现在我们可以添加依赖项:

actix-web = { version = "^2.0.0" , features = [ "rustls" ] } actix-rt = "^1.0.0" actix-files = "^0.2.1" env_logger = "^0.7.1" futures = "^0.3.4" mime_guess = "^2.0.1" serde_json = "^1.0.40" lazy_static = "^1.4.0" rustls = "^0.16.0"

使用actix-web很容易创建Web服务器。 首先,我们需要阅读SSL密钥以支持HTTPS和HTTP / 2:

let mut config = ServerConfig::new(NoClientAuth::new()); let cert_file = & mut BufReader::new(File::open( "cert.pem" ).unwrap()); let key_file = & mut BufReader::new(File::open( "key.pem" ).unwrap()); let cert_chain = certs(cert_file).unwrap(); let mut keys = rsa_private_keys(key_file).unwrap(); config.set_single_cert(cert_chain, keys.remove( 0 )).unwrap();

请注意在生产环境中使用unwrap()-如果失败,则应用程序将崩溃(出现紧急情况)。

现在,我们准备好实际使用Web服务器代码:

HttpServer::new(|| { App::new() .wrap(middleware::Logger::default ()) .service(Files::new( "/static" , "static" )) .default_service( web::resource( "" ) .route(web::get().to(index)) .route( web::route() .guard(guard::Not(guard::Get())) .to(|| HttpResponse::MethodNotAllowed()), ), ) }) .bind_rustls( "0.0.0.0:3001" , config)? .run() .await

这行代码: .service(Files::new("/static", "static")用于处理我们通过运行前一篇文章中的npm build:ssr创建的所有静态断言-( 如何使用SSR和Rust改进React App性能 [第一部分:SSR] )。 为了处理来自ReactJs AppHTML文件请求,我们需要使用.default_service()通过使用带空字符串的web::resource("")来服务所有路由。 index函数是此类请求的处理程序:

asyncfn index (req: HttpRequest) -> impl Responder { let path_req = req.match_info().query( "tail" ).get( 1 ..).unwrap_or_default().trim().clone(); let path = if path_req.len() == 0 { "home_page" } else { match ROUTES.get(path_req) { Some (r) => r, None => "index" } }; match std::fs::File::open( format! ( "static/{}.html" , path)) { Ok ( mut file) => { let mut contents = String ::new(); file.read_to_string(& mut contents).unwrap_or_default(); HttpResponse:: Ok () .content_type( "text/html; charset=utf-8" ) .header( "Cache-Control" , "no-cache, no-store, max-age=0, must-revalidate" ) .header( "pragma" , "no-cache" ) .header( "x-ua-compatible" , "IE=edge, Chrome=1" ) .body(contents) }, Err (e) => { // error handling } } }

该函数实现了路由逻辑,因此我们的Web服务器可以通过路由返回正确HTML文件(呈现的React服务器)。 ROUTES常量基本上包含来自React端生成的routes.json数据。

您可以为此实现做的一项改进是使用现金而不是直接从磁盘读取文件。

最后,麻烦地将文件夹dist / web复制到静态,这应该是自动步骤,并通过cargo r运行我们的Web服务器。

完整示例位于 在GitHub仓库中 。

服务器端渲染的最后一篇文章是关于测试此解决方案与Node.js之间的性能的

您可以通过获取PageSpeed Green网站的Google PageSpeed Insights性能得分来检查这种方法在生产中的速度。

编码愉快!

react ssr

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/23658.html

    分享给朋友:

    “rustdesk 服务器怎么填写 rust服务器选择” 的相关文章

    如何通过命令行安装DSM软件:步骤与技巧教学

    什么是DSM? DSM,即DiskStation Manager,是为Synology NAS设备设计的一款操作系统。它不仅提供了存储管理的基本功能,还有很多高级应用,像文件共享、备份解决方案以及多媒体服务等。可以说,DSM就像一种灵活的操作平台,让用户能够通过直观的界面轻松管理他们的数据和设备。...

    IDC托管便宜还是公有云便宜?全面解析成本优势与选择指导

    在选择IT基础设施时,我发现IDC托管和公有云服务是两个普遍关注的选项。很多企业在进行服务器部署时都在思考“IDC托管便宜还是公有云便宜?”为了帮助大家更好地理解,我决定从几个关键方面进行深入分析。 IDC托管的价格构成 在开始探讨具体价格前,我们有必要理清IDC托管的价格构成。基本上,IDC托管费...

    主机论坛:获取信息与交流经验的最佳平台

    主机论坛概述 在当今的数字时代,主机论坛作为一个专注于域名、主机、VPS和服务器的讨论与信息交流平台,显得尤为重要。对于站长、开发者和一般用户来说,它们不仅是资讯获取的渠道,更是一个技术交流和问题解决的空间。主机论坛通过汇聚来自不同背景的用户,形成了一个活跃的社区,每个人都能找到自己感兴趣的话题,分...

    VPS去程测试:提升网络性能的关键策略与工具

    在当今数字化时代,VPS(虚拟专用服务器)为各类用户提供了极大的灵活性和控制力。为了确保这种服务能够表现出色,VPS去程测试成为了一个重要的话题。简单来说,去程测试是指从我本地设备到VPS服务器的数据传输路径的检查。这种测试能够帮助我了解数据包在传输过程中的表现,包括延迟和可能的瓶颈。 去程测试的重...

    RackNerd在纽约的数据中心服务与优势

    RackNerd在纽约的数据中心的服务确实引人关注。从基础服务到多样化的产品,RackNerd为各类客户提供了丰富的选择。我对于他们的虚拟主机和独立服务器十分赞赏。这些服务不仅安全可靠,而且具有灵活的配置选项,满足了各种不同需求的用户。对于初创企业或者需要特别高可用性的业务,选择RackNerd无疑...

    使用getenforce命令管理SELinux执行模式的技巧与经验

    getenforce的基本概念 当我开始接触Linux系统的时候,SELinux这个名字总是让我感到神秘。经过逐渐的探索,我了解到SELinux(Security-Enhanced Linux)是一个强大的安全模块,它为Linux系统提供了细致的访问控制。这时候,getenforce命令便进入了我的...