全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Nginx泛解析到子目录后自动判断有无public目录详解

前言

我们大家在配置本地 PHP 开发环境时,除非是在 Windows 下,否则我都是偏向于 Nginx + PHP-FPM, 即使 Mac 下已经有了自带的 Apache+PHP 环境,依然如此。一方面是因为 Mac 自带的 PHP 版本不够新(5.6.x),另一方面,Nginx + PHP-FPM 更接近于我的生产服务器环境,而且也方便用 Homebrew 来管理版本和扩展。

在 Mac 下开发 Laravel, 官方提供了 valet, 可以方便地把子目录映射为虚拟主机,但我在使用的时候,遇到一些问题:

  • 真实错误信息难以追踪,总是报 valet 的 index.php 或者 laravel 的 index.php 错误;
  • Symfony 框架里的 config.php/app_debug.php 等无法直接访问。

于是我只保留了 dnsmasq 来管理特定后缀的域名(实现自动解析),然后放弃了 valet,自己做了一个泛解析绑定到本地子目录的配置。

具体配置如下(域名是 *.app):

server {
 listen 80;
 server_name ~^(?<subdomain>.+).app$;
 set $root /Users/kairee/Sites/$subdomain;
 
 if ( -d "/Users/kairee/Sites/$subdomain/public") {
  set $root /Users/kairee/Sites/$subdomain/public;
 }
 root $root;
 charset utf-8;
 client_max_body_size 128M;
 index index.php;
 
 location / {
  try_files $uri $uri/ /index.php$is_args$args;
 }
 
 access_log off;
 
 location ~ \.php\?? {
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/tmp/php.sock;
  fastcgi_index index.php;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }
 
 location ~ /\.ht {
  deny all;
 }
}

采用这个配置以后:

  • 如果存在 ~/Sites/domain/public, 则 domain.app 域名的根目录会指向 ~/Sites/domain/public;
  • 如果存在 ~/Sites/domain 但是不存在 ~/Sites/domain/public, 则 domain.app 域名的根目录会指向 ~/Sites/domain;
  • 网站根目录下真实存在的 php 文件可以直接访问,只有不存在的文件才会通过入口文件(index.php)处理;
  • 如果需要支持其它框架,可以在配置文件中加一条 if 语句实现,比如要支持 symfony 的话,复制一下 if 判断块,把 public 改成 web 即可。

我虽然只是用于 mac/linux, 但实际上 Windows 下当然也是可以的,如果你在 Windows 下也使用 Nginx 的话。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# nginx  # 域名泛解析  # 泛解析  # 目录  # CentOS6.3添加nginx系统服务的实例详解  # 详解nginx 代理多个服务器(多个server方式)  # nginx使用nginx-rtmp-module模块实现直播间功能  # ThinkPHP 在阿里云上的nginx.config配置实例详解  # Laravel 5.5官方推荐的Nginx配置学习教程  # Nginx如何实现pathinfo模式的方法详解  # PHP使用Nginx实现反向代理  # Nginx一个IP如何配置多个站点的方法教程  # Nginx多层代理配置方法  # Nginx 防止被域名恶意解析的办法  # 不存在  # 自带  # 都是  # 是在  # 是因为  # 我在  # 我只  # 才会  # 你在  # 可以直接  # 这篇文章  # 谢谢大家  # 已经有了  # 错误信息  # 留了  # 绑定  # 如要  # 配置文件  # 中加  # 更接近 


相关文章: 清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  建站主机如何安装配置?新手必看操作指南  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  名字制作网站免费,所有小说网站的名字?  如何用西部建站助手快速创建专业网站?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  建站之星安装后如何配置SEO及设计样式?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何制作网站标识牌,动态网站如何制作(教程)?  如何在Windows虚拟主机上快速搭建网站?  Swift中swift中的switch 语句  建站之星代理如何优化在线客服效率?  专业网站建设制作报价,网页设计制作要考什么证?  建站DNS解析失败?如何正确配置域名服务器?  建站主机功能解析:服务器选择与快速搭建指南  建站之星安装需要哪些步骤及注意事项?  智能起名网站制作软件有哪些,制作logo的软件?  ppt制作免费网站有哪些,ppt模板免费下载网站?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  家庭服务器如何搭建个人网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何通过wdcp面板快速创建网站?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  手机网站制作与建设方案,手机网站如何建设?  微信h5制作网站有哪些,免费微信H5页面制作工具?  css网站制作参考文献有哪些,易聊怎么注册?  如何用免费手机建站系统零基础打造专业网站?  深圳网站制作的公司有哪些,dido官方网站?  网站制作网站,深圳做网站哪家比较好?  建站VPS能否同时实现高效与安全翻墙?  建站主机如何选?性能与价格怎样平衡?  建站之星展会模版如何一键下载生成?  如何通过万网虚拟主机快速搭建网站?  如何配置支付宝与微信支付功能?  广州商城建站系统开发成本与周期如何控制?  如何做网站制作流程,*游戏网站怎么搭建?  宝塔新建站点报错如何解决?  建站之星代理费用多少?最新价格详情介绍  红河网站制作公司,红河事业单位身份证如何上传?  建站10G流量真的够用吗?如何应对访问高峰?  如何在阿里云购买域名并搭建网站?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何基于PHP生成高效IDC网络公司建站源码?  如何自定义建站之星模板颜色并下载新样式?  如何用已有域名快速搭建网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  建站之星IIS配置教程:代码生成技巧与站点搭建指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。