2013-05-10 73 views
3

我有一個使用nginx/1.2.6(Ubuntu 13.04 VirtualBox)運行的Symfony2.2.1項目。 硬鏈接的資產呈現方式正常。使用nginx更新符號鏈接靜態文件無效

使用符號鏈接,它僅適用於第一次初始化。 當我更新一個符號鏈接源時,瀏覽器渲染使用 字符轉換我的修改。瀏覽器沒有錯誤,未經修改的部分不受影響。我的CSS文件修改後結束

例子:

[...] 

div.form-actions { 
    text-align: center; 
} 

����� 

目前,我使用的硬鏈接。我沒有Apache2的這個問題...:/

你有想法嗎? 感謝

Nginx的網站的conf:

server { 
    listen 80; 
    root /media/sf_NetBeansProjects/XXXX/web; 
    index app.php; 
    server_name XXXX.lo; 

    location/{ 
     # try to serve file directly, fallback to rewrite 
     try_files $uri @rewriteapp; 
    } 

    location @rewriteapp { 
     # rewrite all to app.php 
     rewrite ^(.*)$ /app.php/$1 last; 
    } 

    location ~ ^/(app|app_dev)\.php(/|$) { 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_split_path_info ^(.+\.php)(/.*)$; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param HTTPS off; 
    } 

    error_log /media/sf_NetBeansProjects/XXXX/app/logs/nginx_errors.log; 
    access_log /media/sf_NetBeansProjects/XXXX/app/logs/nginx_access.log; 
} 

的精妙之處是,媒體/ sf_NetBeansProjects是我的Windows8 VirtualBox中共享文件夾,但正如我前面說的,Apache2的總是好這一點。

+0

我用相當多的你可以粘貼你的nginx站點配置的相關位? – 2013-05-10 12:03:33

+0

是的,我完成了.tks。 – webda2l 2013-05-10 12:17:58

+0

通過更新符號鏈接,你的意思是用編輯後的圖片覆蓋它。 – 2013-05-18 07:59:47

回答

1

這篇文章幫助:

https://coderwall.com/p/ztskha

「簡單地說,的sendfile()使用內核調用直接從光盤爲tcp複製文件如果正在使用遠程文件系統(如NFS或VirtualBox的客戶添置。東西),這種方法是不可靠的。「

實質上,如果您嘗試在主機上存在的訪客虛擬機上提供文件,請關閉NGINX的sendfile。

「要在Apache中關閉sendfile(),可以使用EnableSendfile off指令,對於nginx使用sendfile off。「

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – 2013-11-19 01:53:09

1

好吧,有一件事情出現在我的腦海裏,也許你正在查看圖像文件的二進制數據,所以也許瀏覽器不能識別這是一個圖像文件,也許是因爲nginx沒有發送content-type,可能是另一個原因。但我有一個建議,在默認location /

location/{ 
    try_files ..... ; 
    types { 
     image/jpeg jpg jpeg; 
    } 
} 

或者添加這個,你可以include mime.types服務器塊

server { 
    #bla bla bla 
    include mime.types; 
    location/{ 
     #bla bla 
    } 
} 

裏面我不知道這是否會工作或沒有,但它是值得一試。

+0

沒有任何效果。 – webda2l 2013-05-20 21:05:54

0

嘗試清除瀏覽器緩存有時nginx的扔文件爲原料跟沒有MIME類型集。 另請嘗試更改HttpHeaders將每個文件的過期時間和緩存控制設置爲最小值,這取決於您的項目是否仍在開發中。以便服務器推送的文件始終更新並且不會被瀏覽器緩存。

+0

我已經添加了啞參數?a = 123456強制重載沒有成功 – webda2l 2013-05-21 09:52:47

-1

我有同樣的問題,使用相同的設置。

你需要從Nginx的禁用的sendfile,才能正常發送下符號鏈接這個靜態文件。

location/{ 
     sendfile off; # Do it before try files 

     # try to serve file directly, fallback to rewrite 
     try_files $uri @rewriteapp; 
    }