[英]Nginx vhost cache symlink
我在部署應用程序時遇到問題。 我有一個PHP應用程序,並將帶有Capistrano的應用程序部署到服務器上。
Capistrano使用我的應用程序的最新版本創建一個新的發行文件夾,並且我當前的文件夾符號鏈接到該發行版。 效果很好,它確實鏈接了最新版本。
但是,當我訪問網站的URL時,一切都沒有改變,即使符號鏈接鏈接到當前文件夾(最新發行版),文件仍來自舊發行文件夾。
Nginx是否緩存我的所有文件? 還是緩存我的符號鏈接,我不知道。
資料夾結構:
current (symlink new release)
releases
new release
old release
虛擬主機:
server {
listen 443;
server_name servname.com;
root /apps/application/production/current/public;
}
問題出在實際路徑緩存級別。 它使用符號鏈接路徑緩存PHP文件。 您需要做的是提供真實的文檔路徑。
您需要在配置文件中添加這兩行
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
重要的部分是$realpath_root
因此,您的location ~ \\.php$
將變為
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
確保include fastcgi_params
如果存在)不會覆蓋您剛剛添加的2條指令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.