[英]How to configure two Codeigniter applications in two directories in Nginx, FastCGI
我有一個特定要求,即在指向domain.com/
和domain.com/site2
同一 Nginx 服務器中設置兩個基於 CodeIgniter 的應用程序。
到目前為止,我已經嘗試了各種配置組合,但沒有任何運氣。 大多數時候它給了我 404 錯誤。
以下是我最新的配置文件。
server {
listen 80;
server_name domain.com www.domain.com;
root /var/www/domain.com/;
location / {
root /var/www/domain.com/site1/public/;
index index.html index.php
access_log /var/www/domain.com/site1/logs/access.log;
error_log /var/www/domain.com/site1/logs/errors.log;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/domain.com/main/public$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
location /site2{
root /var/www/domain.com/site2/public/;
index index.html index.php;
access_log /var/www/domain.com/site2/logs/access.log;
error_log /var/www/domain.com/site2/logs/errors.log;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
}
}
}
我使用alias
代替了沒有域部分的root
。 仍然沒有運氣。
但是,當我在 location 塊中使用alias
和try_files $uri $uri/ /site2/site2/public/index.php?$query_string
,它會加載沒有像 css/js 這樣的資產的網站。
你能告訴我我的配置有什么問題嗎?
在fastcgi
使用alias
需要您使用$request_filename
來計算SCRIPT_FILENAME
的正確值。
location
值和alias
值都應以/
結尾或都不以/
結尾,以實現正確的替換。
location /site2 {
alias /var/www/domain.com/site2/public;
index index.html index.php;
access_log /var/www/domain.com/site2/logs/access.log;
error_log /var/www/domain.com/site2/logs/errors.log;
if (!-e $request_filename) { rewrite ^ /site2/index.php last; }
location ~ \.php$ {
if (!-f $request_filename) { return 404; }
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
使用第一個if
塊來模擬問題中的try_files
語句。 由於這個問題,避免使用alias
和try_file
。
使用第二個if
塊來避免將不受控制的請求傳遞給 PHP 。
請參閱有關使用if
注意事項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.