Nginx泛解析到子目錄后自動(dòng)判斷有無(wú)public目錄詳解
前言
我們大家在配置本地 PHP 開(kāi)發(fā)環(huán)境時(shí),除非是在 Windows 下,否則我都是偏向于 Nginx + PHP-FPM, 即使 Mac 下已經(jīng)有了自帶的 Apache+PHP 環(huán)境,依然如此。一方面是因?yàn)?Mac 自帶的 PHP 版本不夠新(5.6.x),另一方面,Nginx + PHP-FPM 更接近于我的生產(chǎn)服務(wù)器環(huán)境,而且也方便用 Homebrew 來(lái)管理版本和擴(kuò)展。
在 Mac 下開(kāi)發(fā) Laravel, 官方提供了 valet, 可以方便地把子目錄映射為虛擬主機(jī),但我在使用的時(shí)候,遇到一些問(wèn)題:
- 真實(shí)錯(cuò)誤信息難以追蹤,總是報(bào) valet 的 index.php 或者 laravel 的 index.php 錯(cuò)誤;
- Symfony 框架里的 config.php/app_debug.php 等無(wú)法直接訪問(wèn)。
于是我只保留了 dnsmasq 來(lái)管理特定后綴的域名(實(shí)現(xiàn)自動(dòng)解析),然后放棄了 valet,自己做了一個(gè)泛解析綁定到本地子目錄的配置。
具體配置如下(域名是 *.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;
}
}
采用這個(gè)配置以后:
- 如果存在 ~/Sites/domain/public, 則 domain.app 域名的根目錄會(huì)指向 ~/Sites/domain/public;
- 如果存在 ~/Sites/domain 但是不存在 ~/Sites/domain/public, 則 domain.app 域名的根目錄會(huì)指向 ~/Sites/domain;
- 網(wǎng)站根目錄下真實(shí)存在的 php 文件可以直接訪問(wèn),只有不存在的文件才會(huì)通過(guò)入口文件(index.php)處理;
- 如果需要支持其它框架,可以在配置文件中加一條 if 語(yǔ)句實(shí)現(xiàn),比如要支持 symfony 的話,復(fù)制一下 if 判斷塊,把 public 改成 web 即可。
我雖然只是用于 mac/linux, 但實(shí)際上 Windows 下當(dāng)然也是可以的,如果你在 Windows 下也使用 Nginx 的話。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- CentOS6.3添加nginx系統(tǒng)服務(wù)的實(shí)例詳解
- 詳解nginx 代理多個(gè)服務(wù)器(多個(gè)server方式)
- nginx使用nginx-rtmp-module模塊實(shí)現(xiàn)直播間功能
- ThinkPHP 在阿里云上的nginx.config配置實(shí)例詳解
- Laravel 5.5官方推薦的Nginx配置學(xué)習(xí)教程
- Nginx如何實(shí)現(xiàn)pathinfo模式的方法詳解
- PHP使用Nginx實(shí)現(xiàn)反向代理
- Nginx一個(gè)IP如何配置多個(gè)站點(diǎn)的方法教程
- Nginx多層代理配置方法
- Nginx 防止被域名惡意解析的辦法
相關(guān)文章
nginx中proxy_set_header參數(shù)的實(shí)現(xiàn)
本文詳細(xì)介紹了Nginx中proxy_set_header指令的用法,通過(guò)設(shè)置不同的請(qǐng)求頭信息,可以實(shí)現(xiàn)更靈活的反向代理功能,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
nginx 常用指令 try_files allow root ali
本文主要介紹了nginx 常用指令 try_files allow root alias的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
Nginx配置文件的使用以及實(shí)現(xiàn)負(fù)載均衡的4種常用方式
這篇文章主要介紹了Nginx配置文件的使用以及實(shí)現(xiàn)負(fù)載均衡的4種常用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Nginx部署https網(wǎng)站并配置地址重寫(xiě)的步驟詳解
今天小編就為大家分享一篇關(guān)于Nginx部署https網(wǎng)站并配置地址重寫(xiě)的步驟詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
Nginx+Keepalived實(shí)現(xiàn)雙機(jī)主備的方法
這篇文章主要介紹了Nginx+Keepalived實(shí)現(xiàn)雙機(jī)主備的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
本地通過(guò)nginx配置反向代理的全過(guò)程記錄
這篇文章主要給大家介紹了關(guān)于本地通過(guò)nginx配置反向代理的全過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Windows系統(tǒng)下安裝及部署Nginx詳細(xì)教程(含多個(gè)站點(diǎn)部署)
Nginx是一個(gè)很強(qiáng)大的高性能Web和反向代理服務(wù),也是一種輕量級(jí)的Web服務(wù)器,可以作為獨(dú)立的服務(wù)器部署網(wǎng)站,應(yīng)用非常廣泛,這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下安裝及部署Nginx(含多個(gè)站點(diǎn)部署)的相關(guān)資料,需要的朋友可以參考下2024-01-01
Centos 6.5 64位中Nginx詳細(xì)安裝部署教程
Nginx是一個(gè)web服務(wù)器也可以用來(lái)做負(fù)載均衡及反向代理使用,目前使用最多的就是負(fù)載均衡,具體簡(jiǎn)介我就不介紹了百度一下有很多,下面直接進(jìn)入安裝步驟,需要的朋友可以參考下2017-08-08

