簡體   English   中英

Nginx虛擬主機緩存符號鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM