nginx實(shí)現(xiàn)一個(gè)域名配置多個(gè)laravel項(xiàng)目的方法示例
背景
隨著公司的子項(xiàng)目越來(lái)越多,會(huì)有大大小小十幾個(gè)工程(僅后端),按照原先的做法,每上線一個(gè)項(xiàng)目,那么必須要有一個(gè)二級(jí)域名映射到對(duì)應(yīng)的工程上,十個(gè)工程那么就意味著需要有十個(gè)二級(jí)域名(還不包含測(cè)試環(huán)境,次生產(chǎn)環(huán)境等),如此多的域名不僅僅是難于管理,更重要的是比較浪費(fèi)資源,這個(gè)問(wèn)題困擾了我很久,今天終于解決了這個(gè)問(wèn)題,特此記錄一下采坑日記,本文不會(huì)講nginx中各個(gè)指令的原理,而是用實(shí)際的項(xiàng)目配置來(lái)練習(xí)nginx指令的用法并舉一反三。
事先準(zhǔn)備
域名
假設(shè)域名為:http://www.dev.com
實(shí)驗(yàn)環(huán)境
阿里云ECS + centos + Nginx + php-fpm
項(xiàng)目1
1.工程路徑: /data/wwwroot/project1/
2.訪問(wèn)路徑:http://www.dev.com/project1/
項(xiàng)目2
1.工程路徑: /data/wwwroot/project2/
2.訪問(wèn)路徑:http://www.dev.com/project2/
項(xiàng)目3
1.工程路徑: /data/wwwroot/project3/
2.訪問(wèn)路徑:http://www.dev.com/project3/
涉及的知識(shí)點(diǎn)
- Nginx的location指令,用法可以參考:http://m.fzitv.net/article/154637.htm
- Nginx的alias指令,用法可以參考:http://m.fzitv.net/article/154640.htm
實(shí)現(xiàn)步驟
為了實(shí)現(xiàn)以上的訪問(wèn)形式,我們需要用到nginx里面的location指令和alias指令,配置如下
location ^~ /${PROJECT}/ {
alias {$PATH};
try_files $uri $uri/ @${PROJECT};
location ~ \.php$ {
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location @${PROJECT}{
rewrite /${PROJECT}/(.*)$ /${PROJECT}/index.php?/$1 last;
}
說(shuō)明: 上面的這個(gè)配置中的${PROJECT}和{$PATH}都是屬于在實(shí)際過(guò)程中需要替換的部分,其中${PROJECT}為url需要訪問(wèn)的path部分,如project1,{$PATH}則代表的是項(xiàng)目的真實(shí)訪問(wèn)路徑,如/data/wwwroot/project1,以http://www.dev.com/project1 訪問(wèn)為例,那么對(duì)應(yīng)的Nginx的配置是這樣子的
location ^~ /project1/ {
alias /data/wwwroot/project1/public;
try_files $uri $uri/ @project1;
location ~ \.php$ {
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location @project1{
rewrite /project1/(.*)$ /project1/index.php?/$1 last;
}
對(duì)于project2和project3的配置只需要按照上面的配置模板依葫蘆畫(huà)瓢就可以了,最后完整nginx配置如下
server {
listen 80;
server_name http://www.dev.com;
access_log /data/wwwlogs/nginx/access_log/www.dev.com_nginx.log combined;
error_log /data/wwwlogs/nginx/error_log/www.dev.com_errr_log;
index index.html index.htm index.php;
# project1開(kāi)始的配置
location ^~ /project1/ {
alias /data/wwwroot/project1/public;
try_files $uri $uri/ @project1;
location ~ \.php$ {
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location @project1{
rewrite /project1/(.*)$ /project1/index.php?/$1 last;
}
# project2開(kāi)始的配置
location ^~ /project2/ {
alias /data/wwwroot/project2/public;
try_files $uri $uri/ @project2;
location ~ \.php$ {
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location @project2{
rewrite /project2/(.*)$ /project2/index.php?/$1 last;
}
# project2開(kāi)始的配置
location ^~ /project3/ {
alias /data/wwwroot/project3/public;
try_files $uri $uri/ @project3;
location ~ \.php$ {
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location @project3{
rewrite /project3/(.*)$ /project3/index.php?/$1 last;
}
# 解析所有的.php
location ~ \.php$ {
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
#圖片、視頻的的鏈接,此處是做緩存 ,緩存30天,不寫(xiě)入訪問(wèn)日志
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d;
access_log off;
}
#js css文件的配置,此處是做緩存 ,緩存7天,不寫(xiě)入訪問(wèn)日志
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Laravel如何友好的修改.env配置文件詳解
- Nginx中運(yùn)行PHP框架Laravel的配置文件分享
- Laravel框架環(huán)境與配置操作實(shí)例分析
- Laravel 前端資源配置教程
- laravel config文件配置全局變量的例子
- Laravel數(shù)據(jù)庫(kù)讀寫(xiě)分離配置的方法
- Laravel 數(shù)據(jù)庫(kù)加密及數(shù)據(jù)庫(kù)表前綴配置方法
- laravel框架數(shù)據(jù)庫(kù)配置及操作數(shù)據(jù)庫(kù)示例
- laravel-admin自動(dòng)生成模塊,及相關(guān)基礎(chǔ)配置方法
- laravel 配置路由 api和web定義的路由的區(qū)別詳解
- Laravel5.6框架使用CKEditor5相關(guān)配置詳解
- Laravel配置全局公共函數(shù)的方法步驟
- Laravel5框架自定義錯(cuò)誤頁(yè)面配置操作示例
- laravel配置Redis多個(gè)庫(kù)的實(shí)現(xiàn)方法
- laravel 框架配置404等異常頁(yè)面
- Laravel 5.5官方推薦的Nginx配置學(xué)習(xí)教程
- Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法分析
- Laravel 5+ .env環(huán)境配置文件詳解
相關(guān)文章
Nginx配置二級(jí)域名的方法實(shí)現(xiàn)
本文主要介紹了Nginx配置二級(jí)域名的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Nginx下實(shí)現(xiàn)pathinfo及ThinkPHP的URL模式
本篇文章主要介紹了Nginx下實(shí)現(xiàn)pathinfo及ThinkPHP的URL模式。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
內(nèi)網(wǎng)環(huán)境nginx配置https訪問(wèn)的過(guò)程詳解
這篇文章主要介紹了內(nèi)網(wǎng)環(huán)境nginx配置https訪問(wèn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
詳解Nginx虛擬主機(jī)配置中server_name的具體寫(xiě)法
這篇文章主要介紹了Nginx虛擬主機(jī)配置中server_name的具體寫(xiě)法,server_name服務(wù)器名是虛擬主機(jī)中必須配置的重要參數(shù),需要的朋友可以參考下2016-03-03
Nginx 遇到502 Bad Gateway 自動(dòng)重啟的腳本代碼
放到crontab里一分鐘執(zhí)行一次。url和cmd根據(jù)自己的改。2010-12-12
nginx利用referer指令實(shí)現(xiàn)防盜鏈配置
nginx模塊ngx_http_referer_module通常用于阻擋來(lái)源非法的域名請(qǐng)求,我們應(yīng)該牢記。下面這篇文章主要介紹了nginx利用referer指令實(shí)現(xiàn)防盜鏈配置的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-03-03
通過(guò)nginx反向代理來(lái)調(diào)試代碼的實(shí)現(xiàn)
這篇文章主要介紹了通過(guò)nginx反向代理來(lái)調(diào)試代碼的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
詳解Keepalived+Nginx實(shí)現(xiàn)高可用(HA)
這篇文章主要介紹了詳解Keepalived+Nginx實(shí)現(xiàn)高可用(HA),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06

