本文主要是介绍java架构师培训:Nginx是怎样从HTTP请求中取出域名的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Nginx允许多个server{}块监听相同的端口,所以当访问相同端口、不同域名的请求到达时,还需要根据请求中的域名做第2次匹配,以决定最终关联的server{}块。
这里我们先要搞清楚域名是怎么从HTTP请求中取出来的。在HTTP/1.0协议中并没有Host头部,这是因为互联网起步时,HTTP的设计者并没有考虑到域名的数量会远多于服务器。对于HTTP/1.0请求而言,只能从absoluteURL中携带域名。
举个例子,下面这个没有携带Host头部的请求可以取到www.taohui.pub域名:
GEThttp://www.taohui.pub/index.htmlHTTP/1.
互联网业务的推动导致一台服务器必须要处理大量域名,于是HTTP/1.1协议推出了描述访问域名的Host头部。对于不含有Host头部的HTTP/1.1请求,RFC规范要求服务器必须返回400错误码(Nginx也正是这么做的)。当Host头部与上述absoluteURL中的域名同时出现时,将会以后者为准。例如对于下面这个请求,Nginx会取出www.taohui.tech作为匹配域名:
GEThttp://www.taohui.tech/index.htmlHTTP/1.0
Host:www.taohui.pub
另外,对于使用了TLS/SSL协议的HTTPS请求来说
这篇关于java架构师培训:Nginx是怎样从HTTP请求中取出域名的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!