我正在嘗試在單獨的文件夾上爲多個版本的項目設置ningx服務器文件。我讀了很多不同的概念和解決方案,但沒有得到任何地方,我不知道什麼是正確的,所以..用於多個Yii2高級項目位置的Nginx配置(部署開發)
目的,是建立一個良好的架構,同時開發一個API具有不同的功能,但不想合併到我們的Dev分支的是,這樣的:
- api.example.com/v1/user/auth(開發)
- api.example.com/ 功能/我 - 新分支/v1/user/auth(my-new-branch)
1.結構
/var/www/html/project-api/
/dev/
api/ <- Advanced Yii2 Environment as frontend/backend
modules/
v1/
controllers/
models/
web/
index.php
common/
vendor/
...
/my-new-branch/
api/
modules/
v1/
controllers/
models/
web/
index.php
common/
vendor/
...
/*/ <- Deploying more equal branches for in progress features
2. Nginx的
server {
listen 80;
root /var/www/html/project-api/src/api/web;
index index.php index.html index.htm;
server_name api.example.com;
error_log /var/log/nginx/project-api/dev-error.log notice;
access_log off;
location/{
try_files $uri $uri/ /index.php$is_args$args;
}
## Features (not working)
location ~* ^/features/my-new-branch/(.+)$ {
root /var/www/html/project-api/my-new-branch/api/web;
try_files /api/web/$1 /api/web/$1/ /features/my-new-branch/index.php?$args;
index /features/my-new-branch/$1/index.php;
location ~ /\.(ht|git) {
deny all;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_param SCRIPT_FILENAME $document_root/api/web/$1;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
include fastcgi_params;
}
}
###########
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on socket
#
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 30d;
}
# deny access to . files, for security
#
location ~ /\. {
log_not_found off;
deny all;
}
}
我有我的服務的開發分支爲正常的PHP網站當前的服務器配置,但我沒有找到一個很好的解決方案爲多個PHP項目nginx,在不同的根和公共文件夾(網絡)上的這種結構。
任何解決方案? 別名,根,重寫,sublocations ..?
(稍後)將我們的「我的新分支」作爲變量以使其動態變化,因爲我在項目文件夾上部署了新功能。
感謝