nginx實現(xiàn)一個域名配置多個laravel項目的方法示例
背景
隨著公司的子項目越來越多,會有大大小小十幾個工程(僅后端),按照原先的做法,每上線一個項目,那么必須要有一個二級域名映射到對應的工程上,十個工程那么就意味著需要有十個二級域名(還不包含測試環(huán)境,次生產環(huán)境等),如此多的域名不僅僅是難于管理,更重要的是比較浪費資源,這個問題困擾了我很久,今天終于解決了這個問題,特此記錄一下采坑日記,本文不會講nginx中各個指令的原理,而是用實際的項目配置來練習nginx指令的用法并舉一反三。
事先準備
域名
假設域名為:http://www.dev.com
實驗環(huán)境
阿里云ECS + centos + Nginx + php-fpm
項目1
1.工程路徑: /data/wwwroot/project1/
2.訪問路徑:http://www.dev.com/project1/
項目2
1.工程路徑: /data/wwwroot/project2/
2.訪問路徑:http://www.dev.com/project2/
項目3
1.工程路徑: /data/wwwroot/project3/
2.訪問路徑:http://www.dev.com/project3/
涉及的知識點
- Nginx的location指令,用法可以參考:http://www.dhdzp.com/article/154637.htm
- Nginx的alias指令,用法可以參考:http://www.dhdzp.com/article/154640.htm
實現(xiàn)步驟
為了實現(xià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;
}
說明: 上面的這個配置中的${PROJECT}和{$PATH}都是屬于在實際過程中需要替換的部分,其中${PROJECT}為url需要訪問的path部分,如project1,{$PATH}則代表的是項目的真實訪問路徑,如/data/wwwroot/project1,以http://www.dev.com/project1 訪問為例,那么對應的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;
}
對于project2和project3的配置只需要按照上面的配置模板依葫蘆畫瓢就可以了,最后完整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開始的配置
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開始的配置
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開始的配置
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天,不寫入訪問日志
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d;
access_log off;
}
#js css文件的配置,此處是做緩存 ,緩存7天,不寫入訪問日志
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Laravel如何友好的修改.env配置文件詳解
- Nginx中運行PHP框架Laravel的配置文件分享
- Laravel框架環(huán)境與配置操作實例分析
- Laravel 前端資源配置教程
- laravel config文件配置全局變量的例子
- Laravel數(shù)據庫讀寫分離配置的方法
- Laravel 數(shù)據庫加密及數(shù)據庫表前綴配置方法
- laravel框架數(shù)據庫配置及操作數(shù)據庫示例
- laravel-admin自動生成模塊,及相關基礎配置方法
- laravel 配置路由 api和web定義的路由的區(qū)別詳解
- Laravel5.6框架使用CKEditor5相關配置詳解
- Laravel配置全局公共函數(shù)的方法步驟
- Laravel5框架自定義錯誤頁面配置操作示例
- laravel配置Redis多個庫的實現(xiàn)方法
- laravel 框架配置404等異常頁面
- Laravel 5.5官方推薦的Nginx配置學習教程
- Laravel Memcached緩存驅動的配置與應用方法分析
- Laravel 5+ .env環(huán)境配置文件詳解
相關文章
Nginx下實現(xiàn)pathinfo及ThinkPHP的URL模式
本篇文章主要介紹了Nginx下實現(xiàn)pathinfo及ThinkPHP的URL模式。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
詳解Nginx虛擬主機配置中server_name的具體寫法
這篇文章主要介紹了Nginx虛擬主機配置中server_name的具體寫法,server_name服務器名是虛擬主機中必須配置的重要參數(shù),需要的朋友可以參考下2016-03-03
Nginx 遇到502 Bad Gateway 自動重啟的腳本代碼
放到crontab里一分鐘執(zhí)行一次。url和cmd根據自己的改。2010-12-12
詳解Keepalived+Nginx實現(xiàn)高可用(HA)
這篇文章主要介紹了詳解Keepalived+Nginx實現(xiàn)高可用(HA),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06

