Nginx、CGI、FastCGI、php-fpm关系

NGINX 和 PHP 是一对很好的搭档,那么 nginx 是如何与 php 结合实现 对外的网络访问呢? 首先 NGINX 作为一个 web 服务器只能处理静态请求,关于动态请求,是通过 CGI 具备的动态请求能力。 NGINX会将动态请求交给 CGI 处理,CGI 将处理结果返回给 NGINX,NGINX 再将请求的结果返给给浏览器 CGI 的作用 当在浏览器中输入一个动态地址时,如 /index.php, 通过 DNS 解析,最终请求会到 web 服务器上,当 NGINX 发现请求时动态请求。会交给 PHP 解释器处理此请求,那再给 NGINX 需要给 PHP 解释器传输哪些数据呢?请求地址,请求方法,请求参数这些东西总归是要有的,但是也不能仅仅是这些,像请求头和 cookie … 也应该包含其中。 那么怎么确定到底该传输哪些数据,以及以什么样的格式传输呢? CGI 就是解决这个问题而生的。 CGI 全程通用网关接口 (英语:Common Gateway Interface,CGI) 是为提供网络服务而执行控制台应用的程序,提供于服务器上实现动态网页的通用协议。通常情况下,一次请求对应一个CGI 脚本的执行,生成一个 HTML。 CGI 接口规定了 nginx 与动态解释器之前传输数据的参数和格式,为 nginx 和脚本解释器之间建立起了一个桥梁。 CGI 的存在使 web 服务器与动态语言之间的关系进行了解耦,使得 web 服务器可以处理的动态请求,但是 CGI 的设计使通过进程的方式来处理动态请求的,当动态请求过来后,CGI 会起一个进程进行处理,请求结束后关闭进程. 进程的频繁创建和销毁是存在开销的,这也就导致了 CGI 很难应对高并发的场景, FastCGI 的出现解决了这个问题....

January 12, 2022 · 1 min · 云溪

申请 let's encrypt 通配符 ssl 证书

在<使用 let’s encrypt 为网站开启 https>一问中,讲述了,如何用 let’s encrypt 为网站开启 https 协议,这篇内容讲一下如何申请 let’s encrypt 通配符证书 什么是通配符证书 通配符 SSL 可以保护网站的 URL 及其所有子域(数量不限)。例如,一个单独的通配符证书就可以保护 www.artacode.com、blog.artacode.com 和 store.artacode.com。 通配符证书可以保护通用域名和您在提交申请时指定的级别下的所有子域。只需在通用域名左侧的子域区域添加星号 (*) 即可。 举例 如果为 *.artacode.com 申请证书,则可以保护: artacode.com www.artacode.com photos.artacode.com blog.artacode.com 如果为 *.www.artacode.com 申请证书,则可以保护: www.artacode.com mail.www.artacode.com photos.www.artacode.com blog.www.artacode.com 通配符证书可以像常规 SSL 证书一样为网站提供保护,并且申请是使用同一种验证方法进行处理的。不过,一些 Web 服务器可能要求使用通配符证书的每个子域都有唯一的 IP 地址。 如何申请 let’s encrypt 通配符证书 安装 Certbot $ wget https://dl.eff.org/certbot-auto $ sudo mv certbot-auto /usr/local/bin/certbot-auto $ sudo chown root /usr/local/bin/certbot-auto $ sudo chmod 0755 /usr/local/bin/certbot-auto 申请证书 certbot-auto --server https://acme-v02....

August 3, 2019 · 3 min · 云溪

使用 let's encrypt 为网站开启 https

启用可用通道 $ yum -y install yum-utils $ yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional 安装 Certbot $ sudo yum install certbot python2-certbot-nginx 获取 nginx 服务器证书 $ sudo certbot certonly --nginx 遇到问题 certbot 未找到 nginx 二进制文件 The nginx plugin is not working; there may be problems with your existing configuration. The error was: NoInstallationError(“Could not find a usable ’nginx’ binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.”,) 由于我机器之前机器上已经安装 nginx 安装目录为 /usr/local/nginx/sbin/nginx 而 certbot 默认会到 /usr/bin/nginx 目录下找,因此需要建立一个软连接...

July 30, 2019 · 1 min · 云溪