全网整合营销服务商

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

免费咨询热线: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 防止被域名恶意解析的办法  # 不存在  # 自带  # 都是  # 是在  # 是因为  # 我在  # 我只  # 才会  # 你在  # 可以直接  # 这篇文章  # 谢谢大家  # 已经有了  # 错误信息  # 留了  # 绑定  # 如要  # 配置文件  # 中加  # 更接近 


相关文章: 建站之星如何一键生成手机站?  ,有什么在线背英语单词效率比较高的网站?  如何在宝塔面板中修改默认建站目录?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何在云主机快速搭建网站站点?  高性价比服务器租赁——企业级配置与24小时运维服务  如何做网站制作流程,*游戏网站怎么搭建?  如何获取开源自助建站系统免费下载链接?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  如何选择高效便捷的WAP商城建站系统?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  如何选择高效稳定的ISP建站解决方案?  建站三合一如何选?哪家性价比更高?  如何在IIS7中新建站点?详细步骤解析  招商网站制作流程,网站招商广告语?  建站之星如何快速生成多端适配网站?  建站ABC备案流程中有哪些关键注意事项?  如何构建满足综合性能需求的优质建站方案?  建站之星展会模版如何一键下载生成?  如何高效配置香港服务器实现快速建站?  高端企业智能建站程序:SEO优化与响应式模板定制开发  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  建站之星展会模板:智能建站与自助搭建高效解决方案  C#怎么使用委托和事件 C# delegate与event编程方法  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何在云主机上快速搭建多站点网站?  建站主机如何选?性能与价格怎样平衡?  平台云上自主建站:模板化设计与智能工具打造高效网站  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  如何选择PHP开源工具快速搭建网站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  网站制作免费,什么网站能看正片电影?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  如何在阿里云虚拟服务器快速搭建网站?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  ,南京靠谱的征婚网站?  建站之星导航如何优化提升用户体验?  Android滚轮选择时间控件使用详解  海南网站制作公司有哪些,海口网是哪家的?  如何快速搭建高效可靠的建站解决方案?  如何快速建站并高效导出源代码?  无锡营销型网站制作公司,无锡网选车牌流程?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  江苏网站制作公司有哪些,江苏书法考级官方网站?  建站主机选择指南:服务器配置与SEO优化实战技巧  高端网站建设与定制开发一站式解决方案 中企动力 

您的项目需求

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