web服务nginx和php的相互关系
nginx和php有什么关系?很多新手可能有这个疑问,我之前学php也没注意这些问题,只管着按文档配置操作,完成php项目就不管了,最近特意总结了一下。
php是一门编程语言,讲究说学逗唱...呃,不对,是可以编写很多程序,但是只有php的话,你的php只能在你的服务器里孤立的运行,比如你用php写了一个可以通过身高计算人的标准体重的程序,虽然这个程序可以在服务器运行,但是他还不能和客户交互,因为客户现在还不能访问你的php程序,他也不会去下载你的php程序到自己电脑里运行,他只想默默的通过浏览器告诉你他的身高,然后得到这个程序返回的体重,那么谁来得到这个用户发送过来的请求呢,又怎么把请求数据转发给对应的php程序呢 ?
nginx就是为了解决上述问题而出现的,nginx是一个已经写好的程序,需要安装配置,作用是专门接收处理客户通过浏览器等发送来的请求,并和你写的php程序交互,就这么简单,但是nginx不仅可以和你写的php程序交互,也可以和你写的其他程序交互,比如C,python,因为不是所有人都用php来写web程序,简单点说nginx是一个可以监听处理http请求(浏览器请求)的程序,会装会配置,知道流程就可以用了,当然深入了解下就更好了。
这样的话,nginx就可以比喻处理成处理http请求业务的部门,是服务器和外部千千万万浏览器等客户端进行沟通的关口。php是服务器内部一个数据加工部门,可以加工生成各种页面。客户端发送的http请求历经层层路由到达你的服务器,然后被nginx逮个正着,统一听候nginx大人的调度,如果客户请求的是其他静态资源,比如txt文本,图片等,nginx直接找到该资源,并返回给客户端,如果客户请求的是php程序,就找到对应的php程序,然后把客户数据给这个程序,让这个php程序运行一遍,再把这个程序运行的结果返回给客户端。
当然nginx和php具体交互并没有那么简单,还需要保证规范和高效,在数据交换上,需遵守统一的规范,这个好理解,大家统一数据格式才不会乱套,效率才会更高。
为了更深入的理解nginx,你也可以自己写一个web服务,比如用c或python写一个程序监听你服务器的80端口,80端口就是http请求的入口,然后还要考虑多线程等处理,因为客户的请求有时候会一起过来,也就是并发,不能写个服务只能处理一个请求,得到客户的请求后还要得到需要的参数进行分析,如果对方请求的是php程序,要考虑在系统里实时启动对应的php程序,把数据交给那个程序,然后老老实实的等这个程序运行结束,得到该程序产生的结果,然后把这个结果送还给客户端,这样就完成任务了。自己去想办法实现还能补充不少知识,比如socket编程,c,进程之间是怎么进行交互的等等,写完后还会去关注处理请求能力,内存使用情况,这样下来就会有一个比较完整的认识,最后反过来就会去想nginx是怎样处理高并发的呢?为什么我写的遇到并发经常挂掉?我写的和php交互时为什么这么慢?nginx里配置的php-fpm又是什么?有了这些疑问后,再进行下一步深入探索,效率就会高很多了。
web服务nginx和php的相互关系的更多相关文章
- WEB服务-Nginx之十-keepalived
WEB服务-Nginx之10-keepalived 目录 WEB服务-Nginx之10-keepalived Keepalived和高可用 基本概述 Keepalived安装配置 Keepalived ...
- nginx 与 tomcat 组合搭建web服务
部分内容转自 http://www.cnblogs.com/naaoveGIS/ 1. Web服务 nginx是常用的web服务器,用于获取静态资源,类似的服务器还有apache. tomcat是基于 ...
- 风尘浪子 只要肯努力,梦想总有一天会实现 WF工作流与Web服务的相互调用 —— 通过Web服务调用Workflow工作流(开发持久化工作流) _转
如果你曾经负责开发企业ERP系统或者OA系统,工作流对你来说一定并不陌生.工作流(Workflow)是对工作流程及其各操作步骤之间业务规则 的抽象.概括.描述.工作流要解决的主要问题是:为实现某个业务 ...
- web服务之nginx部署
本期内容概要 了解web服务 Nginx和Apache的对比 部署Nginx 内容详细 1.什么是web服务 Web服务是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用 ...
- Web服务器之Nginx详解(操作部分)
大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...
- Web服务器之Nginx详解(理论部分)
大纲 一.前言 二.Web服务器提供服务的方式 三.多进程.多线程.异步模式的对比 四.Web 服务请求过程 五.Linux I/O 模型 六.Linux I/O 模型具体说明 七.Linux I/O ...
- nginx作为web服务以及nginx.conf详解
Nginx系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.nginx简介 nginx是一个优秀的web服务程序.反向代理程序.它采用非 ...
- 2-4、nginx特性及基础概念-nginx web服务配置详解
Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...
- 【转】Web服务器之Nginx详解(理论部分)
大纲 一.前言 二.Web服务器提供服务的方式 三.多进程.多线程.异步模式的对比 四.Web 服务请求过程 五.Linux I/O 模型 六.Linux I/O 模型具体说明 七.Linux I/O ...
随机推荐
- 洛谷 P2522 [HAOI2011]Problem b (莫比乌斯反演+简单容斥)
题目描述 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 输入输出格式 输入格式: 第一行一个整数 ...
- Android Studio的Gradle错误解决方法
因为喜欢尝鲜,试了一下google的Android studio,但是在创建工程时,出现了尝试连接service.gradle.org错误的问题,查了一下,在StackOverFlow找到以下答案: ...
- php中的list()
list()在php中上一个语言结构,并不是一个函数.类似array(),不过array()这个东西我们现在一般很少使用了,因为从php5.4版本开始,我们会直接使用[]来定义数组. 那么,list( ...
- 2017《Java学习》第二次作业 计科1502任秀兴
学习git总结 安装git 1. 安装完成后执行命令git --version查看版本 2.执行命令git config --global user.nam "你的用户名",执行命 ...
- 解决:The “https://packagist.laravel-china.org/packages.json” file could not be downloaded
使用composer安装错误提示: The "https://packagist.laravel-china.org/packages.json" file could not b ...
- TP5截取部分字符串
TP5截取超出的字符串,使用...显示 在公共文件common.php中 视图模板中调用
- 20140923 cin.get() getline cin
#include<iostream> #include<string> using namespace std; int main() { string title; ...
- Scrapy框架: pipelines.py设置
保存数据到json文件 # -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your p ...
- 用Emacs进行Java开发
用Emacs进行Java开发 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839496;} 用 ...
- testparm - 检查smb.conf配置文件的内部正确性
总览 testparm [-s] [-h] [-L servername] [configfilename] [hostname hostIP] 描述 此程序是samba套件的一部分. testpar ...