nginx 先判斷文件是否存在再用反響代理?
nginx 先判斷一個目錄下是否存在文件,文件不存在時做反向代理從另一台伺服器上取。
這種需求rewrite要怎麼寫?
不要用rewrite去實現,nginx本身提供了try_files來查找文件,可以用在反向代理中
下面是nginx官方文檔里的說明,看不懂的話你自己再去百度翻譯
注意以下的示例代碼Example in proxying Mongrel:
location / {
try_files /system/maintenance.html
$uri $uri/index.html $uri.html
@mongrel;
}location @mongrel {
proxy_pass http://mongrel;
}
下面是nginx官方文檔的截圖
謝謝,最近電腦壞了,是lenovo E40,這款機器太爛了,E系列都不好(題外話)。你可以這樣試試:
1.當訪問的文件和目錄不存在時,重定向到某個html文件
if( !-e $request_filename )
{
rewrite ^/(.*)$ index.html last;
}
2.Nginx Rewrite可以用到的全局變數
$args ,$content_length ,$content_type ,$document_root ,$document_uri ,$host ,$http_user_agent ,$http_cookie ,$limit_rate ,$request_body_file ,$request_method ,$remote_addr ,$remote_port ,$remote_user ,$request_filename ,$request_uri ,$query_string ,$scheme ,$server_protocol ,$server_addr ,$server_name ,$server_port ,$uri .
可以看看nginx rewrite規則,指令和源碼,Nginx Rewrite規則相關指令有if、rewrite、set、return、break等 。如果是圖片或者視頻文件,分散式文件系統也是一個選擇,可以直接從本地讀取。
謝邀。
我覺得類似的這種問題最好先好好看看rewrite的用法,然後自己試著去實現,並測試。這或許就是所謂的理論指導實踐,如果自己對理論都不清楚的話,以後再出現類似的問題,又需要來知乎上尋求幫助了。我覺得這才是真正的解決問題之道。推薦閱讀:
※Nginx伺服器內部重定向
※Nginx 反向代理為什麼可以提高網站性能?
※使用nginx反向代理到谷歌可行嗎?
※【Flask/React】本人BLOG的緩存實現