Nginx之6大千世界 - (FastCGI)
为什么要使用FastCGI
在之前已经介绍Nginx只是一个静态应用服务器,并不能直接执行外部的动态脚本程序,但是Nginx可以作为代理服务器,将动态的请求转发给后端服务处理。Nginx中的模块"ngx_http_fastcgi_module"专门为了解决此类问题。
FastCGI工作原理
Nginx因为不支持对外部程序的直接调用或者解析,所以所有的外部程序必须通过FastCGI接口来调用(如下图所示),还需要使用封装器(wapper)对FastCGI的Nginx请求理解成Application所成识别的形式进行传递,封装器的线程对请求完成后在通过FastCGI传回给Nginx。
功能配置
使用Nginx去监听用户请求,如果请求的是php页面,则代理至后端PHP的脚本解析服务器。
1.启动php脚本解析服务,确认9000端口已监听中
2.修改Nginx的配置文件,将php页面请求转发至脚本解析服务
server {
listen 80;
server_name nginx.yekangming.com;
location / {
root /data/webroot/nginx;
index index.html;
}
location ~ \.php$ {
root /data/webroot/nginx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
3.FastCGI配置详解(conf/fastcgi.conf)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#脚本文件 请求的路径
fastcgi_param QUERY_STRING $query_string; #请求的参数
fastcgi_param REQUEST_METHOD $request_method; #请求的动作(GET,POST)
fastcgi_param CONTENT_TYPE $content_type; #请求头中的Content-Type字段
fastcgi_param CONTENT_LENGTH $content_length; #请求头中的Content-length字段
fastcgi_param SCRIPT_NAME $fastcgi_script_name; #脚本名称
fastcgi_param REQUEST_URI $request_uri; #请求的地址不带参数
fastcgi_param DOCUMENT_URI $document_uri; #与$uri相同
fastcgi_param DOCUMENT_ROOT $document_root; #网站的根目录
fastcgi_param SERVER_PROTOCOL $server_protocol; #请求使用的协议
fastcgi_param REQUEST_SCHEME $scheme; #请求协议
fastcgi_param HTTPS $https if_not_empty; # 有https协议时自动使用https
fastcgi_param GATEWAY_INTERFACE CGI/1.1;#cgi 版本
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; #nginx版本号
fastcgi_param REMOTE_ADDR $remote_addr; #客户端IP
fastcgi_param REMOTE_PORT $remote_port; #客户端端口
fastcgi_param SERVER_ADDR $server_addr; #服务器IP地址
fastcgi_param SERVER_PORT $server_port; #服务器端口
fastcgi_param SERVER_NAME $server_name; #服务器名
fastcgi_param REDIRECT_STATUS 200; 重定向状态码
访问效果
小知识
在真实的场景中,我们一般会使用Nginx来处理静态资源请求,如果对于动态资源请求,我们将会采用反向代理、FastCGI等方式和后端的应用服务器进行交互。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Object转Map的几个坑
这里总结了三种Object转Map的方法 1、利用反射getDeclaredFields和getFields /** * 对传入的对象进行数据清洗,将属性值为null和""的去掉,其他字段名和属性值存入map集合 */ public Map<String,Object> objectToMap(Object requestParameters) throws IllegalAccessException { Map<String, Object> map = new HashMap<>(); // 获取f对象对应类中的所有属性域 Field[] fields = requestParameters.getClass(
-
下一篇
【资料下载】Python 第七讲——从实战中了解异步爬虫aiohttp的使用
直播时间:3月12日(周二)20:00——21:00 直播讲师 :陈祥安——阿里特邀技术专家 有着丰富的爬虫工作经验,从c#语言转入到python语言,擅长各种爬虫技术,熟悉大规模爬虫开发,热爱并喜欢钻研python。 直播介绍:平时我们也许用的更多的是requests模块,或者是requests_html模块,但是他们都属于阻塞类型的不支持异步,速度很难提高,后来有人发布了异步的grequests,开始了异步网络请求,速度得到了大大的提升,但是今天我们要说的另外的一个比较异步网络请求模块-aiohttp。aiohttp是一个异步http网络模块分为了客户端和服务端,同时支持websocket的使用。这里我们主要说客户端部分。通过详细的案例分享,代码演示,教你如何快速入门高性能异步爬虫模块aiohttp,为你的爬虫提提速。同时分享一些自
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- MySQL数据库在高并发下的优化方案
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19