作者:吉祥话如意 | 来源:互联网 | 2023-02-04 10:42
在PHP中,我们将Apache(或Nginx)作为HTTP服务器.它们也是PHP Web开发的事实标准.
在Rust中,Web上的几乎所有示例都是通过"Cargo run"命令运行自己的HTTP服务器(或"hyper"库),然后在浏览器中转到localhost以查看结果.似乎没有人会在Apache/Nginx上部署它.
为什么Rust程序没有部署在提供如此多有用和成熟功能的现有HTTP服务器中(例如VirtualHost,Alias,SSL,mod_rewrite等)?
此外,使用此Web服务器比Apache/Nginx有什么好处?
在生产环境中,您是否也使用超级库作为Rust的Web服务器?
1> Treebasher..:
在PHP之外的其他东西编写Web应用程序时,常见的方法是使用Apache或NGINX作为面向公众的服务器.然后在Apache或NGINX中设置虚拟主机以充当远程代理,它将所有连接转发到您的Web应用程序(Rust,Golang,Python,Node.js等等),这些连接本身就是自己运行的服务器绑定到localhost上的非80端口.
对于(粗略)视觉示例:
+++++++++++++++++++++++ SERVER +++++++++++++++++++++++++++++++++++
+ [Web Application (bound to localhost:8080)] +
+ /|\ +
+ | reverse proxy connection +
+ \|/ +
+ [NGINX (bound to remote_address::80 and remote_address:443)] +
+++++++++++++++++++++++++/|\+++++++++++/|\++++++++++++++++++++++++
| |
\|/ \|/
++++++++++++ ++++++++++++
+ CLIENT + + CLIENT +
++++++++++++ ++++++++++++
这种方法(通常)更安全,允许您轻松使用成熟Web服务器的功能(例如SSL,负载平衡等),并允许您专注于编写健壮的Web应用程序而不是编写一个强大的Web服务器.
请查看本文,了解有关如何将NGINX设置为反向代理的文档.虽然Apache同样有能力,但NGINX在创建Web应用程序和堆栈时往往是首选的Web服务器,因为它的速度和相对轻量级的事实.
值得一提的是,这种体系结构与PHP和Apache之间的区别在于简单地说,PHP作为"扩展模块"运行到Apache而不是"外部组件".实际上,当你将PHP与NGINX一起使用时,你必须以与本文所述非常相似的方式进行设置.
另一个类似于代理HTTP的选项是FastCGI https://softwareengineering.stackexchange.com/questions/178698/web-interface-with-fastcgi-or-with-direct-http