Rust 的 Web 服务器就好像 Apache 到 PHP
Web server for Rust as if Apache to PHP
在PHP中,我们使用Apache(或Nginx)作为HTTP 服务器。它们也是为 PHP 网络开发设立的事实上的标准。
在 Rust 中,几乎所有网络上的示例都是通过 "Cargo run" 命令 运行 自己的 HTTP 服务器(或 "hyper" 库),然后在浏览器中转到 localhost 查看结果。似乎没有人会在 Apache/Nginx.
上部署它
为什么 Rust 程序没有部署在现有的 HTTP 服务器中,这些服务器提供了这么多有用和成熟的功能(例如 VirtualHost、Alias、SSL、mod_rewrite 等)?
此外,与 Apache/Nginx 相比,使用此网络服务器有什么好处?
在生产环境中,您是否也使用 hyper library 作为 Rust 的 Web 服务器?
用 PHP 以外的其他东西编写 Web 应用程序时,常用的方法是使用 Apache 或 NGINX 作为面向 public 的服务器。然后,您在 Apache 或 NGINX 中设置一个虚拟主机作为远程代理,将所有连接转发到您的 Web 应用程序(Rust、Golang、Python、Node.js 等),这是, 本身,运行 它自己的服务器绑定到本地主机上的非 80 端口。
对于(粗略的)视觉示例:
+++++++++++++++++++++++ SERVER +++++++++++++++++++++++++++++++++++
+ [Web Application (bound to localhost:8080)] +
+ /|\ +
+ | reverse proxy connection +
+ \|/ +
+ [NGINX (bound to remote_address::80 and remote_address:443)] +
+++++++++++++++++++++++++/|\+++++++++++/|\++++++++++++++++++++++++
| |
\|/ \|/
++++++++++++ ++++++++++++
+ CLIENT + + CLIENT +
++++++++++++ ++++++++++++
这种方法(通常)更安全,允许您像您所说的那样轻松使用成熟网络服务器的功能(例如 SSL、负载平衡等),并允许您专注于编写健壮的web 应用程序而不是编写一个健壮的 web 服务器。
查看 this article 以获取有关如何将 NGINX 设置为反向代理的文档。尽管 Apache 的功能同样强大,但由于 NGINX 的速度和相对轻量的事实,它往往是创建 Web 应用程序和堆栈时的首选 Web 服务器。
就其价值而言,此架构与 PHP 和 Apache 一起看起来的区别在于,简单地说,PHP 作为 "extension module" 到 Apache 而不是作为 "external component"。实际上,当您将 PHP 与 NGINX 一起使用时,您必须以与 post.
中描述的非常相似的方式进行设置
在PHP中,我们使用Apache(或Nginx)作为HTTP 服务器。它们也是为 PHP 网络开发设立的事实上的标准。
在 Rust 中,几乎所有网络上的示例都是通过 "Cargo run" 命令 运行 自己的 HTTP 服务器(或 "hyper" 库),然后在浏览器中转到 localhost 查看结果。似乎没有人会在 Apache/Nginx.
上部署它为什么 Rust 程序没有部署在现有的 HTTP 服务器中,这些服务器提供了这么多有用和成熟的功能(例如 VirtualHost、Alias、SSL、mod_rewrite 等)?
此外,与 Apache/Nginx 相比,使用此网络服务器有什么好处?
在生产环境中,您是否也使用 hyper library 作为 Rust 的 Web 服务器?
用 PHP 以外的其他东西编写 Web 应用程序时,常用的方法是使用 Apache 或 NGINX 作为面向 public 的服务器。然后,您在 Apache 或 NGINX 中设置一个虚拟主机作为远程代理,将所有连接转发到您的 Web 应用程序(Rust、Golang、Python、Node.js 等),这是, 本身,运行 它自己的服务器绑定到本地主机上的非 80 端口。
对于(粗略的)视觉示例:
+++++++++++++++++++++++ SERVER +++++++++++++++++++++++++++++++++++
+ [Web Application (bound to localhost:8080)] +
+ /|\ +
+ | reverse proxy connection +
+ \|/ +
+ [NGINX (bound to remote_address::80 and remote_address:443)] +
+++++++++++++++++++++++++/|\+++++++++++/|\++++++++++++++++++++++++
| |
\|/ \|/
++++++++++++ ++++++++++++
+ CLIENT + + CLIENT +
++++++++++++ ++++++++++++
这种方法(通常)更安全,允许您像您所说的那样轻松使用成熟网络服务器的功能(例如 SSL、负载平衡等),并允许您专注于编写健壮的web 应用程序而不是编写一个健壮的 web 服务器。
查看 this article 以获取有关如何将 NGINX 设置为反向代理的文档。尽管 Apache 的功能同样强大,但由于 NGINX 的速度和相对轻量的事实,它往往是创建 Web 应用程序和堆栈时的首选 Web 服务器。
就其价值而言,此架构与 PHP 和 Apache 一起看起来的区别在于,简单地说,PHP 作为 "extension module" 到 Apache 而不是作为 "external component"。实际上,当您将 PHP 与 NGINX 一起使用时,您必须以与 post.
中描述的非常相似的方式进行设置