用单台虚拟主机实现多个域名

HTTP/1.1 允许一台 HTTP 服务器搭建多个 web 站点, 例如提供 web 托管服务的供应商, 可以用一台服务器为多位客户服务, 也可以以每位客户持有的域名运行各自不同的网站. 这是利用了虚拟主机的功能.

即使物理层面只有一台服务器, 但只要使用虚拟主机的功能, 则可以假想已具备多台服务器.

客户端使用 HTTP 协议访问服务器时, 会经常采用类似 www.hackr.jp 这样的主机名和域名.

在互联网上, 域名通过 DNS 服务映射到 IP地址(地址解析)之后访问目标网站, 可见, 当请求发送到服务器时, 已经是以 IP 地址形式访问了. 所以, 当一台服务器内托管了 www.tricoder.jp 和 www.hackr.jp 两个域名, 当收到请求时就需要弄清楚究竟要访问哪个域名.

通信数据转发程序: 代理, 网关, 隧道

HTTP通信时, 除客户端和服务器以外, 还有一些用户通信数据转发的应用程序, 例如 代理, 网关和隧道.

这些应用程序和服务器可以将请求转发给通信线路上的下一站服务器, 并且能够接收从那台服务器发送的响应再转发给客户端.

代理: 是一种有转发功能的应用程序, 它扮演了位于服务器和客户端之间的中间人的角色.

使用代理服务器的理由: 利用缓存技术减少网络带宽的流量, 组织内部针对特定网站的访问控制, 获取访问日志 等.

代理基本上分为两类: 缓存代理, 透明/非透明 代理

缓存代理: 代理转发响应时, 会预先将资源的副本(缓存) 保存在代理服务器上. 当代理再次接收到对相同资源的请求时, 就可以不从源服务器那里获取资源, 而是将之前缓存的资源作为响应返回.

透明代理: 转发请求或响应时, 不对报文做任何加工的代理类型被称为透明代理, 反之, 被称为 非透明代理

网关:是转发其他服务器通信数据的服务器, 接收从客户端发送过来的请求时, 它就像自己拥有资源服务器一样对请求进行处理, 有时客户端可能都不会察觉, 自己的通信目标是一个网关.

网关的工作和代理十分类似, 而网关能使通信线路上的服务器提供非 HTTP 协议服务.

隧道: 中转.加密, 隧道的目的是确保客户端和服务器进行安全的通信.

隧道本身不去解析 HTTP 请求, 隧道会在通信双方断开连接时结束.

保存资源的缓存

缓存是指代理服务器和客户端本地磁盘内保存的资源副本, 利用缓存可减少对源服务器的访问, 缓存服务器是代理服务器的一种, 并归类在缓存代理类型中.

缓存有效期, 即使存在缓存, 也会因为客户端的要求, 缓存的有效期等因素, 向源服务器确认资源的有效性. 若判断缓存失效, 缓存服务器将会再次从源服务器上获取"新"资源.

注意 这里的缓存, 不是 Cookie, 不是一回事.

HTTP 04 web 服务器的更多相关文章

  1. ubuntu 12.04 安装 nginx+php+mysql web服务器

    Nginx 是一个轻量级,以占用系统资源少,运行效率而成为web服务器的后起之秀,国内现在很多大型网站都以使用nginx,包括腾讯.新浪等大型信息网站,还有淘宝网站使用的是nginx二次开发的web服 ...

  2. [转] ubuntu 12.04 安装 nginx+php+mysql web服务器

    Nginx 是一个轻量级,以占用系统资源少,运行效率而成为web服务器的后起之秀,国内现在很多大型网站都以使用nginx,包括腾讯.新浪等大型信息网站,还有淘宝网站使用的是nginx二次开发的web服 ...

  3. 如何在Ubuntu 18.04上安装和配置Apache 2 Web服务器(转)

    如何在Ubuntu 18.04上安装和配置Apache 2 Web服务器 什么是Apache Web Server? Apache或Apache HTTP服务器是一个免费的开源Web服务器,由Apac ...

  4. ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境

    1.Ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境 http://blog.db89.org/ubuntu12-04-install-nginx-php-m ...

  5. 如何在Ubuntu 16.04上安装Apache Web服务器

    转载自:https://www.howtoing.com/how-to-install-the-apache-web-server-on-ubuntu-16-04 介绍 Apache HTTP服务器是 ...

  6. 如何在Ubuntu 18.04上安装Apache Web服务器

    一. apt库安装 1.在终端输入更新检查命令,sudo apt-get update 2. 在更新完成后(如果不想检查更新,也可直接输入此步)输入:sudo apt-get install apac ...

  7. Ubuntu20.04搭建web服务器

    其他Ubuntu20以及Ubuntu18系列也可以!

  8. C#中使用Socket实现简单Web服务器

    上一篇博客中介绍了怎样使用socket访问web服务器.关键有两个: 熟悉Socket编程: 熟悉HTTP协议. 上一篇主要是通过socket来模拟浏览器向(任何)Web服务器发送(HTTP)请求,重 ...

  9. C#中使用Socket请求Web服务器过程

    最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有“连接建立”的发生. 而有人或许会问: ...

随机推荐

  1. Ghostscript 将PDF文件转换成PNG图片 问题一二

    由于项目需求,需要将原来的PDF文档转换成图片文件,在网上找了一些PDF转图片的方法:测试了几个后,都有这样或那样的问题 1.PDFLibNet.dll,这个类型最初还是挺好用的,能转图片和HTML, ...

  2. BZOJ4437 : [Cerc2015]Looping Labyrinth

    从$(0,0)$开始BFS$2\times10^6$步,那么迷宫的形状有三种: 1.走不完$2\times10^6$步,直接判定即可. 2.可以走到$(n,0)$以及$(0,m)$,那么直接把询问点平 ...

  3. ES6 类

    ES6之前没有类的概念,一般采用以下方式来模仿类 基本的类声明语法 私有属性是实例中的属性,不会出现在原型上,且只能在类的构造函数中创建所有私有属性 PersonClass声明实际上创建了一个具有构造 ...

  4. 我要当皇帝等微信小游戏的wbs

    猜字:1.视图交互: 1)主界面:展示每一道题目跟答案 1) 题目展示区域, 成员布局 2) 选项展示 3) 其他 2)下一道题弹框 3)答案弹框 4)结果弹框 5)关卡弹框 2.数据处理, 1) 读 ...

  5. day8网络编程,面向对象1

    一.只是回顾 1.导入模块的顺序,首先从当前目录下找,再从环境变量里面找,使用"sys.path.insert(0,'需要导入的环境变量')"加入需要导入文件的环境变量; 2.如果 ...

  6. helm-chart-2-chart结构和简单模板

    1, chart 结构介绍 我们创建一个chart 并查看其结构 右侧注释为其文件的的解释 $ helm create mychart $ cd mychart/ $ tree ├── charts ...

  7. JS_高程7.函数表达式(2)递归

    递归函数:一个函数通过名字调用自身的情况构成的.eg: //递归实现阶乘 function factorial(num){ if(num <= 1){ return 1; }else{ retu ...

  8. GMA Round 1 二项式展开

    传送门 二项式展开 求$(2x-y+\frac{3}{x}+4z)^{12}$展开式中不含x的任意非0次幂的项的系数和. 用排列组合的思想,相当于在12个括号里选项出来.先把$2x$和$\frac{3 ...

  9. [Java代码] Java用pinyin4j根据汉语获取各种格式和需求的拼音

    pinyin4j是一个功能强悍的汉语拼音工具包,主要是从汉语获取各种格式和需求的拼音,功能强悍,下面看看如何使用pinyin4j.下面介绍用pinyin4j来做的一个根据汉语获取各种格式和需求的拼音d ...

  10. 2012服务器在IIS部署的SLL(https)网址谷歌浏览器无法访问的问题解决

    服务器环境:Windows Server 2012,IIS8. 当绑定了https,使用IE和Firefox浏览器能够正常访问,但是使用谷歌浏览器会出现net::ERR_CONNECTION_ABOR ...