Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >brew 安装 nginx 配合PHP工作

brew 安装 nginx 配合PHP工作

作者头像
很酷的站长
发布于 2022-12-28 08:07:57
发布于 2022-12-28 08:07:57
72700
代码可运行
举报
运行总次数:0
代码可运行

1. 前言

环境介绍: mac book pro m1 2020

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

2. 安装PHP

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew search php

安装php7.2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew install php@7.2

切换 PHP 版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew-php-switcher 7.2
3. nginx的安装及基本配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew install nginx

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location / {
    root   html;
    index  index.html index.htm;
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DocumentRoot "/Users/liang/Sites"

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 访问

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 访问提示404
http://127.0.0.1:8081/index.php/index/hello
// 访问正常
http://127.0.0.1:8081/index.php?s=/index/hello

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (!-e $request_filename) {
    rewrite ^/index.php(.*)$ /index.php?s=$1 last;
    rewrite ^(.*)$ /index.php?s=$1 last;
    break;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rewrite ^/index.php(.*)$ /index.php?s=$1 last; 
/index.php/index/hello 重写为 /index.php?s=/index/hello
rewrite ^(.*)$ /index.php?s=$1 last;
/index/hello 重写为 /index.php?s=/index/hello

修改后的配置文件示例:

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
include servers/*;

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
autoindex on; # 开启目录文件列表
autoindex_localtime on; # 显示的文件时间为文件的服务器时间
autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes,但我试的时候没看到效果
charset utf-8,gbk; # 避免中文乱码,使中文文件名可以正常显示

配置示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location / {
    root   /Users/liang/Sites;
    index  index.html index.htm index.php;
    autoindex on;
    autoindex_localtime on;
    autoindex_exact_size on;
    charset utf-8,gbk;
}

配置成功

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
教你端口映射,实现外网访问内网服务器:传统公网路由器设置教程,和不用公网IP的端口映射软件3步实现
服务器映射又称端口转发:端口映射过程就如同你家在一个小区里B栋2410室,你朋友来找你,找到小区门口,不知道你住哪层哪号?就问守门的保安,保安很客气的告诉了区域地址,这样你朋友很轻松的找到了你家。这个过程就是外网访问内网通过端口映射的形象说法。
用户4416417
2025/08/08
5340
腾讯云服务器搭建网站只需7个步骤(宝塔面板+wordpress)
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
用户2416682
2019/12/07
7K0
腾讯云服务器搭建网站只需7个步骤(宝塔面板+wordpress)
域名劫持
作者:sarleon 来自:freebuf.com 01 原理 DNS决定的是我们的域名将解析到哪一个IP地址的记录,是基于UDP协议的一种应用层协议 这个攻击的前提是攻击者掌控了你的网关(可以是路由器,交换机,或者运营商),一般来说,在一个WLAN下面,使用ARP劫持就可以达到此效果。 你在访问一个网站的过程中,经历了如下几个阶段: 以访问freebuf的主页为例: 1、地址栏输入freebuf.com 2、访问本机的hosts文件,查找 freebuf.com 所对应的 IP,若找到,则访问该IP
架构师小秘圈
2018/04/02
8.3K0
域名劫持
DNS详解: A记录,子域名,CNAME别名,PTR,MX,TXT,SRV,TTL
DNS,Domain Name System或者Domain Name Service(域名系统或者域名服务)。域名系统为Internet上的主机分配域名地址和IP地址。由于网络中的计算机都必须有个IP地址,来识别, 互相之间才能通信,但让我们记住一大串的IP地址来访问网站显然是不可能的,所以用户使用域名地址,而DNS系统的功能就是自动把域名地址翻译为IP地址。域名服务是运行域名系统的Internet工具。执行域名服务的服务器称之为DNS服务器,通过DNS服务器来应答域名服务的查询。 1、DNS就是域名服务器,他的任务就是确定域名的解析,比如A记录MX记录等等。 2、任何域名都至少有一个DNS,一般是2个。但为什么要2个以上呢?因为DNS可以轮回处理,这样第一个解析失败可以找第二个。这样只要有一个DNS解析正常,就不会影响域名的正常使用。 3、如何确定域名的DNS 很简单到www.internic.net/whois.html输入你要查询的域名就可以看到了。这个是国际域名管理中心。唯一的权威。只要这里能查到某个域名,就表示域名是生效的。它说你什么时候到期,就是什么时候到期。 4、有效的DNS表示当前正在起作用的DNS服务器是谁,比如查询结果是NS.XINNETDNS.COM、NS.XINNET.CN(新网信海)就表示当前域名是由NS.XINNETDNS.COM、NS.XINNET.CN(新网信海)负责解析。其他未显示的DNS的设置,都是无效的。 5、 DNS是可以修改的。修改以后需要24-72小时以后,全世界范围的所有DNS服务器才能刷新过来。internic的信息一般在24小时以后可以看到。另外,修改的过程,并不表示域名会停止解析,只要你在2边都做好了解析。如果生效了就是新的DNS在起作用。如果没生效。就是旧的DNS在起作用。要么生效,要么不生效。不存在2个都不起作用的时间。所以域名解析,不会中断。前提是两边都做了解析。
sunsky
2020/08/19
9.5K0
【图文】腾讯云服务器搭建网站教程(宝塔面板+wordpress)
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
云上云
2019/07/02
10.6K2
【图文】腾讯云服务器搭建网站教程(宝塔面板+wordpress)
腾讯云搭建WordPress网站教程详解
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
主机精选@主机点评
2019/09/19
9.1K0
如何在腾讯云服务器上搭建一个宝塔面板的web网站?
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
Kami米雅
2021/11/19
9.4K0
如何在腾讯云服务器上搭建一个宝塔面板的web网站?
把网站部署在家里!--群晖docker下装宝塔面板
部署环境我想了几种方案,因为家里软路由上装的是esxi,所以想过搞一个liunx的虚拟机,然后再装宝塔面板。后来为了简单,还是在群晖上装一个宝塔面板的docker版本。
星橙
2021/09/09
19.1K1
把网站部署在家里!--群晖docker下装宝塔面板
不会linux系统使用宝塔安装WordPress(附优惠券)
有了宝塔面板,FTP工具直接被干掉,因为宝塔面板支持右键功能,根本不需要使用FTP工具了,博主以前一直使用的是虚拟主机,无论走到哪都是少不了FTP工具的,如果舍弃掉还真有点不习惯。好了,这里直接说下博主安装宝塔面板的详细过程,特此记录以供参考:
Wordpress教程
2019/05/08
2.3K0
不会linux系统使用宝塔安装WordPress(附优惠券)
【图文】腾讯云服务器搭建网站教程(宝塔面板+wordpress)
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
2019/07/18
7.2K0
玩转服务器---域名注册及域名备案
上一篇讲到了如何选购入门级云服务器,阿里云,腾讯云之类的云服务器一般平时折扣力度都比较大,但是这种折扣的云服务器到期后续费一般都很贵,所以如果想长期架构自己的网站的话,我个人建议可以选择三年起步,一般三年起步都可以打五折。本篇文章主要讲下域名的注册以及域名的备案。
创译科技
2019/06/02
19.9K0
腾讯云如何绑定域名(腾讯云域名如何绑定ip)
2) 这里需要做进一步的设置,比如,在更多选项卡中,开启CNAME加速,开启搜索引擎推送等。
聚优云惠
2019/10/02
105.8K0
基于wordpress零基础纯新手向-2022最新最全面最详细教程-教你一步一步搭建自己的网站
我们日常生活工作都会浏览各式各样的网站,在这期间你是否也想过搭建一个属于自己的网站、博客,来分享、讨论、交流你的专业知识和兴趣爱好、展示自己的生活状态和艺术作品?
望舒瑾
2022/05/31
4.1K1
基于wordpress零基础纯新手向-2022最新最全面最详细教程-教你一步一步搭建自己的网站
腾讯云域名解析教程_腾讯云购买的域名如何解析IP地址
在2019年建网站的步骤和过程一文里面,奶爸给大家说的建网站第一步就是注册域名,那么如果你是在腾讯云注册的域名,注册完毕后怎么解析到自己的网站服务器的IP地址呢?本文就通过图文教程给大家介绍如何在腾讯云进行域名解析。
奶爸建站笔记
2019/10/10
62.3K0
有手就行?从0开始一步步教你搭建自己的网站(全篇7000字、102张截图说明,力求每个人看完都能做到)
这篇文章我花了两天的时间,全篇7000字,102张截图说明,精细到每一次点击、每一个输入说明
浩说编程
2021/12/18
3.6K0
有手就行?从0开始一步步教你搭建自己的网站(全篇7000字、102张截图说明,力求每个人看完都能做到)
利用云服务器搭建网站教程
进入到了腾讯云界面,我们输入我们想注册的域名,然后查询,如果我们想要的域名没有被注册的话,我们就可以注册一个,各个后缀价格不同,看自己喜好。域名注册完成之后需要进行实名认证,腾讯云的速度的话我这里是几分钟就实名认证审核通过了,速度还是蛮快的.
Chuanrui 初见之旅
2022/11/14
5.1K0
利用云服务器搭建网站教程
域名解析失败什么意思 域名到哪里购买比较靠谱
随着互联网的进步,传统企业也开始走上了搭建网站的道路,搭建网站的意义就是建立企业的形象,让客户从网站中了解都企业的观念与文化,还能知道企业产品中的优势,从而提高成交率。创建网站域名是必不可少的,但依旧会在创建网站中遇到一些问题,下面就给大家讲讲域名解析失败什么意思?
用户8715145
2021/08/20
4.7K0
为绑定域名的 GitHub Pages 启用 HTTPS
Update 2018/05/01: GitHub 官方已经支持自定义域名启用 HTTPS 了,见 https://blog.github.com/2018-05-01-github-pages-custom-domains-https/
mzlogin
2020/04/16
3.2K0
为绑定域名的 GitHub Pages 启用 HTTPS
如何申请域名邮箱?域名邮箱的作用有哪些?
大家或多或少懂得在创建网站前先申请域名,不少人已经在使用过域名,惟独对域名邮箱比较陌生,域名邮箱作为域名的一小部分,其实功能多和操作方便,非常值得推荐使用,所以,我们先来了解下如何申请域名邮箱?域名邮箱的作用有哪些?
用户8739990
2021/08/06
23.8K0
如何申请域名邮箱?域名邮箱的作用有哪些?
二级域名怎么设置 域名分为几级
互联网给人们的生活、工作、创业都带来了方便,现在很多企业或者个人,都建立了自己的网站,然而在建网站之前,注册域名是开始的第一步,只在注册好了域名,才可以进行网站其他步骤的操作,这些大部比较了解,但对于二级域名怎么设置也许会比较陌生,下面就来看看,域名为分几级,二级域名怎么设置吧。
用户8739990
2021/07/23
19.6K1
二级域名怎么设置 域名分为几级
推荐阅读
相关推荐
教你端口映射,实现外网访问内网服务器:传统公网路由器设置教程,和不用公网IP的端口映射软件3步实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验