2017-03-27 43 views
0

我正在嘗試在單獨的文件夾上爲多個版本的項目設置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 ..?

(稍後)將我們的「我的新分支」作爲變量以使其動態變化,因爲我在項目文件夾上部署了新功能。

感謝

回答

0

您可以使用別名,根,sublocations或分開的位置。我認爲重寫是沒有必要的。

我寧願這樣做Yii2基本和模塊。一個輸入點和Yii2-app-basic urlMenager一切工作。 我不知道,這是否會幫助你,但看看這個Yii2 NGINX advanced config

子在我的新分支Yii2,應用先進的需要改變配置文件

return [ 
    'homeUrl' => '/features/my-new-branch/', 

    'components' => [ 

     'request' => [ 
      'baseUrl' => '/features/my-new-branch', 
     ], 
    ] 
]