服务器只是一台带有web服务器软件的机器(比如nginx、apache等)。当我们在托管服务(如GoDaddy或云服务)中托管网站时,它们是为部署的每个应用程序提供web服务器软件,还是只为机器(服务器)提供一个web服务器软件,而每个应用程序都使用它,或者我们(客户端)需要设置web服务器软件?
服务器可以拥有“n”个web服务器软件吗?
在DNS记录中,每个应用程序域的记录是否指向服务器的IP地址或web服务器的IP地址?
如果一个服务器中的所有应用程序域指向同一个IP地址,那么请求是如何路由到特定应用程序的?
如果问题有什么不对的地方,请指出,因为我对这些话题很陌生。
发布于 2022-01-22 17:08:32
服务器只是一台带有web服务器软件的机器(比如nginx、apache等)。
不一定。服务器是一种计算机系统,用于向其他系统(客户端)提供内容、数据处理(或简单地从其他来源获取)并返回给客户端。
如果它通过HTTP协议服务内容,或者数据库服务器,如果它存储数据并允许以关系(SQL)或非关系方式进行数据操作,或者DNS服务器(如果它通过DNS协议提供有关主机名和IP地址的信息,等等),则可能是Web服务器。
当我们在托管服务(如GoDaddy或云服务)中托管网站时,它们是为部署的每个应用程序提供web服务器软件,还是只为机器(服务器)提供一个web服务器软件,而每个应用程序都使用它,或者我们(客户端)需要设置web服务器软件?
那得看情况。有些公司为虚拟机(或类似的)提供了像Apache这样的预先安装的Web服务器,而您“只需要”为您的应用程序正确配置它们。其他(AWS EC2)只是提供简单的虚拟机,您必须安装和配置您可能需要的任何服务或包(包括一个Web服务器)。
服务器可以拥有“n”个web服务器软件吗?
是。同一服务器可以承载不同的Web服务器工具(例如,Apache和Nginx,用于不同的应用程序),甚至可以承载同一Web服务器技术的不同实例(例如,通过容器),也可以承载单个Web服务器工具来处理多个应用程序(可能使用虚拟主机)。
在DNS记录中,每个应用程序域的记录是否指向服务器的IP地址或web服务器的IP地址?
它应该指向任何可以从外部路由和访问的IP地址,并以某种方式“绑定”到Web服务器。一个简单的设置可能是一个虚拟机,它有一个IP地址,web服务器监听该IP地址。但是web服务器也可以在内部侦听另一个地址,例如127.0.0.1,并使用一些技术(如NAT)接收以VM IP地址作为目标地址的HTTP请求。诸若此类。
如果一个服务器中的所有应用程序域指向同一个IP地址,那么请求是如何路由到特定应用程序的?
这可以通过多种方式完成。首先,您可以有不同的进程监听相同的IP地址,但在不同的端口。只要端口不同,就没有冲突-- http://www.example.com:80将到达与http://www.example.com:8080不同的web服务器(或web服务器实例)。通过使用不同的端口并将每个端口绑定到一个进程或进程“实例”(例如虚拟主机),每个请求被转发到正确的应用程序。
编辑
试图回答评论中的其他问题。
如果多个应用程序部署在共享服务器上而不是VM上怎么办?由于每个人都希望端口为443(默认端口),如果应用程序使用HTTPS,请求如何被路由?域名的DNS记录的Ip地址将指向什么?
如果多个应用程序在同一个端口和同一个IP上侦听,则可以执行其他类型的流量操作。例如,假设同一个IP绑定到三个应用程序:
app1.example.com -端口443
app2.example.com -端口443
app3.example.com -端口443
对同一个IP地址和端口的HTTP请求如何重定向到正确的应用程序?一种方法是使用主机标头。如果浏览器想联系app1.example.com,它将向同一个IP和端口发送一个HTTP请求,主机报头设置为"app1.example.com“。反向代理将接受该请求,读取主机头的值,并将该请求重定向到与"app1.example.com“关联的进程,即使该进程与其他web服务器侦听的IP和端口相同。
另一种不同的方法依赖于使用具有多个IP地址的机器(VM,裸金属-不重要)。如果同一台机器有多个IP地址,它可以在同一端口上承载不同的应用程序,但可以承载不同的地址,而无需使用任何HTTP报头技巧。
https://serverfault.com/questions/1090818
复制相似问题