PHP程序员玩转Linux系列 nginx初学者引导

发布时间 - 2026-01-11 00:37:56    点击率:

PHP程序员玩转Linux系列文章:

1.PHP程序员玩转Linux系列-怎么安装使用CentOS

2.PHP程序员玩转Linux系列-lnmp环境的搭建

3.PHP程序员玩转Linux系列-搭建FTP代码开发环境

4.PHP程序员玩转Linux系列-备份还原MySQL

5.PHP程序员玩转Linux系列-自动备份与SVN

6.PHP程序员玩转Linux系列-Linux和Windows安装nginx

翻译自官网文档

nginx有一个master进程和很多个worker进程.master进程的主要目的是读取和执行配置文件,维持worker进程.worker进程真正处理请求.nginx基于事件模型和操作系统来分配worker进程,配置文件中的worker进程数一般配置成CPU的内核数.默认的配置文件名是nginx.conf,目录地址一般在/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx

开始,关闭和重载配置

nginx 开启

nginx -s reload 重新载入配置文件

nginx -s quit 优雅的退出

nginx -s reopen 重新打开日志文件

静态内容服务

打开配置文件,里面已经包含了一个server块的例子

http {
 server {
 }
}

默认的nginx配置文件nginx.conf里面,使用include指令包含了/etc/nginx/conf.d/此目录下后缀为.conf的所有配置文件

http {
 include /etc/nginx/mime.types;
 default_type application/octet-stream;

 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
   '$status $body_bytes_sent "$http_referer" '
   '"$http_user_agent" "$http_x_forwarded_for"';

 access_log /var/log/nginx/access.log main;

 sendfile on;
 #tcp_nopush on;

 keepalive_timeout 65;

 #gzip on;

 include /etc/nginx/conf.d/*.conf;
}

/etc/nginx/conf.d/目录下,编辑default.conf文件,通常会有很多的配置文件,每个配置文件中都有一个server块,nginx通过他们监听的端口和server_name来区分,它还会对请求头和server块里面location指令参数比较.

server {
 location / {
 root /var/www/html;
 }
}

这个location块指定了"/"前缀,比较请求的URI,对于匹配到的URI,这个URI会被拼接到root指令指定路径的后面.换句话说,在本地文件系统中去构成路径,就是去请求/var/www/html.

如果这里有很多location指令,nginx会选择最长前缀的.上面的location块提供了一个最短前缀,只有当其他所有的location都没有匹配到,才会使用它.

下一步,增加第二个localtion块

server {
 location / {
 root /var/www/html;
 }
 location /images/ {
 root /data;
 }
}

当请求以/images/开始,第二个location将会匹配到 (location / 也会匹配到这个请求,但是他的前缀比第二个短)

现在它已经可以作为web服务的配置文件正常工作了,监听80端口.在本地机器输入http://localhost就可以访问到该服务.当请求URI以/images/开头,服务器会响应/data/images目录下的文件.举例:当请求是http://localhost/images/example.png,nginx会响应/data/images/example.png文件.如果该文件不存在,nginx会响应404错误.

当请求的URI不以/images/开头,该请求会被映射到/var/www/html目录.举例:请求的URI是http://localhost/some/example.html,nginx会响应/var/www/html/some/example.html文件.

应用新的配置,开启nginx或者发送reload信号给nginx的master进程,执行以下命令:

nginx -s reload

万一有不可预料的错误发生,去access.log error.log中找原因,这两个文件的目录在/usr/local/nginx/logs或者/var/log/nginx

配置简单的反向代理服务

nginx最常用的功能就是作为反向代理服务器,意味着这个服务要接收请求,把请求引到被代理的服务,从那里取回响应,发送给客户端.

我们将配置基本的反向代理服务器,这个服务处理来自本地目录的图片文件的请求,并把其他的所有请求发给代理服务器.在这个例子中,两个服务都会被定义在一个nginx实例中.

首先,定义一个代理服务器,在nginx配置文件中新添加一个server块,如下:

server {
 listen 8080;
 root /data/up1;

 location / {
 }
}

这个简单的服务监听8080端口(之前,我们没有使用过listen指令,因为默认是监听的80端口),映射所有的请求到本地文件系统的/data/up1目录.创建这个目录,在里面放入index.html文件.注意root指令放在了server上下文了.当location块下没有root指令时,这个root指令将会被使用.

下一步,使用上一步中的服务配合,修改一下作为反向代理服务器配置.在第一个location块中,添加一个proxy_pass指令,在参数中指明协议名和代理服务的端口(在本例,它是http://localhost:8080)

server {
 location / {
  proxy_pass http://localhost:8080;
 }

 location ~ \.(gif|jpg|png)$ {
  root /data/images;
 }
}

在第二个location块中,参数是个正则表达式,匹配所有后缀是.gif.jpg或者.png的请求,使用正则表达式,应该在前面加上~ .符合的请求将会被映射到/data/images目录下

配置FastCGI代理服务

nginx可以用作去路由请求到FastCGI服务,这样就可以运行一些各种框架和PHP的应用

最基本的nginx配置,使用fastcgi_pass指令替换proxy_pass指令,fastcgi_param指令设置传递给FastCGI服务器的参数.假定FastCGI服务器运行在localhost:9000.把上一部分中的反向代理配置例子拿过来,修改参数为localhost:9000.在PHP中,SCRIPT_FILENAME参数被用作确定脚本名称,QUERY_STRING 被用作传递请求参数,配置如下:

server {
 location / {
 fastcgi_pass localhost:9000;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param QUERY_STRING $query_string;
 }

 location ~ \.(gif|jpg|png)$ {
 root /data/images;
 }
}

现在就创建了一个服务,这个服务将路由出了静态图片文件之外的所有请求到被代理的服务器.这个被代理的服务器是通过FastCGI协议运行在localhost:9000上的.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Linux  # nginx  # nasm实现的用vmware运行自做的linux启动盘的引导代码  # Linux的引导过程剖析  # Linux管理员手册(5)--引导和关机  # linux系统命令笔记整理  # Linux系统用户管理命令小结  # Linux系统清除缓存的方法总结  # linux系统sudo命令详解  # Linux系统删除文件夹和文件的命令  # linux系统下dd命令的使用方法  # Linux系统中sudo命令的十个技巧总结  # linux引导系统的方法分析  # 配置文件  # 玩转  # 代理服务器  # 第二个  # 将会  # 有很多  # 代理服务  # 目录下  # 文件系统  # 就可以  # 有一个  # 是个  # 放在  # 也会  # 包含了  # 在这个  # 出了  # 第一个  # 才会  # 其他的 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 原生JS获取元素集合的子元素宽度实例  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  三星、SK海力士获美批准:可向中国出口芯片制造设备  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  制作企业网站建设方案,怎样建设一个公司网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  javascript中闭包概念与用法深入理解  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  网站页面设计需要考虑到这些问题  Python文件操作最佳实践_稳定性说明【指导】  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  如何用狗爹虚拟主机快速搭建网站?  JS去除重复并统计数量的实现方法  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何基于云服务器快速搭建网站及云盘系统?  JavaScript如何实现继承_有哪些常用方法  用yum安装MySQLdb模块的步骤方法  Angular 表单中正确绑定输入值以确保提交与验证正常工作  phpredis提高消息队列的实时性方法(推荐)  Java遍历集合的三种方式  如何快速生成橙子建站落地页链接?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  bing浏览器学术搜索入口_bing学术文献检索地址  如何在橙子建站中快速调整背景颜色?  如何在云服务器上快速搭建个人网站?  Laravel如何创建自定义中间件?(Middleware代码示例)  5种Android数据存储方式汇总  香港服务器WordPress建站指南:SEO优化与高效部署策略  JS实现鼠标移上去显示图片或微信二维码  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  C#如何调用原生C++ COM对象详解  如何在Ubuntu系统下快速搭建WordPress个人网站?  JS经典正则表达式笔试题汇总  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  如何实现建站之星域名转发设置?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  怎么用AI帮你为初创公司进行市场定位分析?  简单实现Android文件上传  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Python自动化办公教程_ExcelWordPDF批量处理案例