当前位置:首页 > 编程技术 > 正文内容

brew 安装 nginx 配合PHP工作

yc8881年前 (2022-12-26)编程技术209

1. 前言


环境介绍: mac book pro m1 2020

本文记录使用 brew 安装 nginx 配合PHP工作

2. 安装PHP


查看有哪些PHP版本可以安装

  1. brew search php

安装php7.2

  1. brew install php@7.2

切换 PHP 版本

  1. brew-php-switcher 7.2

3. nginx的安装及基本配置


  1. brew install nginx

一、location /: 因为所有的请求都是以/开头的,所以下面的配置相当于匹配任意的URL

  1. location / {
  2. root html;
  3. index index.html index.htm;
  4. }

root: 站点根目录, 相当于ApahceDocumentRoot

  1. DocumentRoot "/Users/liang/Sites"

index: 默认访问的文件, 相当于ApahceDirectoryIndex

  1. <IfModule dir_module>
  2. DirectoryIndex index.html index.php
  3. </IfModule>

二、location ~ \.php$: 匹配以.php结尾的文件

fastcgi_param: 将值中的 /scripts 改为 $document_root

fastcgi_pass: 如果请求时php文件,那么nginx会把请求转发到 127.0.0.1:9000, 其中 9000 是php-fpm的端口

  1. location ~ \.php$ {
  2. root html;
  3. fastcgi_pass 127.0.0.1:9000;
  4. fastcgi_index index.php;
  5. fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  6. include fastcgi_params;
  7. }

查看 php-fpm.d 目录下的 配置文件 www.conf

  1. cat /opt/homebrew/etc/php/7.2/php-fpm.d/www.conf

进入 vim 模式,搜索关键词 9000, 就会发现确实可以找到 listen = 127.0.0.1:9000

4. nginx的URL重写


以TP6.0举例,访问 index控制器的 hello 方法,用 /index/hello 访问提示 404

因为nginx 默认是不支持pathinfo方式访问的,如果要访问可以通过 s=/index/hello 访问

  1. // 访问提示404
  2. http://127.0.0.1:8081/index.php/index/hello
  3. // 访问正常
  4. http://127.0.0.1:8081/index.php?s=/index/hello

但是可以通过修改配置文件使其支持pathinfo方式访问,将以下代码放入 location / 中即可

  1. if (!-e $request_filename) {
  2. rewrite ^/index.php(.*)$ /index.php?s=$1 last;
  3. rewrite ^(.*)$ /index.php?s=$1 last;
  4. break;
  5. }
  1. rewrite ^/index.php(.*)$ /index.php?s=$1 last;
  2. /index.php/index/hello 重写为 /index.php?s=/index/hello
  3. rewrite ^(.*)$ /index.php?s=$1 last;
  4. /index/hello 重写为 /index.php?s=/index/hello

修改后的配置文件示例:

5. 更高效的管理nginx配置文件(虚拟主机)


nginx 要友好的支持PHP项目,只需要去关注server 配置块即可

后续 nginx 上需要绑定多个项目,这是如何做配置呢

方案一: 在 nginx.conf 可以使用多个 server 配置块管理不同的项目,此时不方便管理,因为所有项目的配置都在一个文件中

方案二: 将方案一中的 server块 抽离出来,放到相应的目录下面,而 nginx 也提供了这样一种能力

在 nginx.conf 配置文件的最下面有这样一个配置,就是定义这个目录的路径

  1. include servers/*;

将项目的 server 配置块抽离出来, 放到 servers 目录下,一个项目占用一个配置文件

6. 配置web访问以及查看目录文件


nginx 默认不支持像 ftp 那样显示文件列表,即使 localhost 指向的目录下面有文件和目录,访问时也会提示 403 Forbidden

可以通过给 location / 配置段添加额外参数使其支持显示目录文件,将以下代码放入 location / 中即可

  1. autoindex on; # 开启目录文件列表
  2. autoindex_localtime on; # 显示的文件时间为文件的服务器时间
  3. autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes,但我试的时候没看到效果
  4. charset utf-8,gbk; # 避免中文乱码,使中文文件名可以正常显示

配置示例

  1. location / {
  2. root /Users/liang/Sites;
  3. index index.html index.htm index.php;
  4. autoindex on;
  5. autoindex_localtime on;
  6. autoindex_exact_size on;
  7. charset utf-8,gbk;
  8. }

配置成功

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10284.html

标签: Nginx
分享给朋友:

“brew 安装 nginx 配合PHP工作” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】vagrant实现linux虚拟机的安装并配置网络

【说站】vagrant实现linux虚拟机的安装并配置网络

一、VirtualBox的下载和安装1、下载VirtualBox官网下载:https://www.virtualbox.org/wiki/Downloads我的电脑是Windows的,所以下载Wind...

【说站】Java从resources读取文件内容的方法有哪些

【说站】Java从resources读取文件内容的方法有哪些

本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...