情景2:带应用程序服务器的Web服务器
如果用户向服务器请求的是一个脚本程序(例如PHP文件),因为Web服务器本身是不能解析这个脚本程序的,那么服务器除了要安装Web服务器Apache,还要安装可以解析脚本程序的应用程序服务器软件(例如PHP应用服务器),并在Apache服务器中配置来自客户端的PHP文件的请求,就可以在服务器端使用PHP应用服务器来解析PHP程序了。因为PHP应用服务器会理解并解释PHP代码的含义,这样就可以根据用户不同的请求进行操作,也就是通过PHP程序的动态处理,解释成不同的HTML静态代码响应给用户。当然返回给客户端浏览器的只是一个很单纯的静态HTML网页,说 明动态网站在客户端是看不到PHP程序源代码的,这在一定程度上起到了代码保护的作用。
有一个和“情景1”一样的实例,只不过用户并不是请求服务器中的静态网页,而是一个需要动态处理的PHP文件。例如,用户如果请求Web服务器book/目录下的index.php文件,在客户端浏览器的地址栏中输入UR/book/index.php”去请求服务器。过程如下。
第一步:和访问静态网页是一样的,用户打开浏览器,在地址栏中输入一个URL“http://www.php.com/book/index.php”去请求Web服务器。
第二步:同样使用HTTP协议连接Apache网页服务器,但请求的是服务器book/目录下的一个index.php动态语言脚本文件。
第三步:Apache网页服务器收到客户端请求的PHP文件,如果安装了应用程序服务器,则不直接返回给客户端PHP文件内容,但自己又不能处理,这时就寻找PHP应用服务器并委托它来处理把用户请求的/book/index.php文件交给PHP应用服务器。
第四步:PHP应用服务器接到Apache服务器的委托,打开index.php文件,根据PHP脚本中的代码逐条解释并翻译成用户需要的HTML代码,再交还给Apache服务器响应给客户端浏览器。
第五步:浏览器收到Web服务器的响应,接收服务器端下载的HTML静态代码,同时逐条进行解释,输出图形用户界面。
整个过程如图1-16所示。