将任何Web服务器与任何服务器应用程序的语言结合使用

时间:2018-02-20 00:20:46

标签: nginx iis webserver programming-languages application-server

我是服务器端编程的新手,所以如果我的问题看起来很明显或荒谬,请原谅。

我正在测试不同的后端选项,比如服务器语言(PHP,ASP.NET,Node.js,Python,Ruby和Go)和Web服务器(Apache,nginx,IIS ......)。
我这样做是为了监控Web应用程序找到最佳语言和Web服务器。服务器应该根据客户端的请求从数据库中获取数据(由另一个应用程序独立更新),并将其返回给客户端(就像后台一样,它与问题无关)。

我现在的问题如标题所述,我可以使用任何应用程序服务器语言的Web服务器吗?
例如,使用nginx和说ASP.NET(我非常清楚ASP.NET与IIS一起使用,我只想举一个极端的例子)?

如果语言与任何网络服务器不兼容,请向我解释以下哪种语言与哪些网络服务器(最推荐的网络服务器)兼容以及原因:

  • PHP
  • ASP.NET
  • Node.js的
  • 的Python
  • 红宝石
  • 开始

再次,抱歉,如果是关于汽车,我问的是自行车。感谢您的帮助,我真的很感激。

1 个答案:

答案 0 :(得分:0)

首先,最好将框架和编程语言视为完全不同的概念,即使它们经常齐头并进。例如。 Python是一种编程语言,而ASP.NET是一种框架。您可以在C#,VB甚至Python中编写ASP.NET框架应用程序。如果您选择编程语言,比如Python,您可以将Django,web2py和TurboGears用于基于Python的Web应用程序。

对于Web服务器,它取决于您希望与编程语言的哪种集成。更多的整合并不一定更好。 Apache可以运行一个紧密集成的PHP模块。 Nginx可以使用fastcgi运行PHP Web应用程序,它允许您将PHP代码作为外部进程运行。尽管Nginx使用fastcgi并不像Apache那样紧密耦合,但它并不一定更慢或更糟!在许多情况下,主Web服务器(例如Nginx)仅是实际Web服务器的代理,其中Nginx代理处理最新的Web协议,例如HTTP2,SSL和压缩支持。这样,应用程序的主Web服务器可以相当简单。这就是ASP.NET核心Kestrel Web服务器的工作方式:它是一个非常简单的准系统Web服务器,几乎不支持最新和更高级的Web协议。相反,Kestrel依靠代理来提供这些服务。

因此,为了回答您的问题,您几乎可以使用任何通用Web服务器作为任何编程语言/框架的主Web服务器,假设Web服务器是1)外部代理Web服务,2)语言支持内置或捆绑模块(例如Apache + PHP)或3)支持使用cgi / fastcgi等接口(例如Nginx + PHP或Apache + Pyhthon)。例如,IIS可以本机运行.NET 4.x应用程序,使用代理运行.NET核心,使用fastcgi运行PHP。

然而,完全不同的问题是将任何语言与任何Web服务器相结合是否是一个好主意。某些组合受到严重支持,或者可能性能较慢。

我的建议是从另一端查看问题:首先选择您的语言,然后从该语言可用的框架中进行选择,然后根据支持情况选择合适的Web服务器。如果您需要灵活性,请使用代理。使用例如Nginx作为前置代理,您可以在同一台计算机上使用不同的编程语言运行多个Web服务器。使用代理,所有这些都可以很好地运行,并且您可以拥有源自相同IP地址的多个网站。