Select Page

Nginx Cache:fastcgi_cache purging (NGINX Helper)使用教學

Nginx 是一個高效能、高穩定性的 Web 伺服器。其中,Nginx 提供的 fastcgi_cache 可以有效地快取後端伺服器(如 PHP-FPM)的回應,以提高網站的回應速度。但在預設情況下,我們需要手動清理這些快取。此時,我們可以使用 NGINX Helper 插件來協助進行快取的清除。

前期準備

要有編譯器

sudo apt-get install g++

NGINX Helper

1. 安裝 NGINX Helper

首先,你需要在你的網站上安裝 NGINX Helper。如果你使用的是 WordPress,可以直接從插件庫中安裝。

2. 設定 NGINX 快取路徑

為了讓 NGINX Helper 知道你的 Nginx 快取路徑,你需要在 Nginx 的設定檔中,指定 fastcgi_cache_path。例如:

fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=MYCACHE:100m inactive=60m;

此設定將會在 /var/run/nginx-cache 建立快取資料。

3. 配置 NGINX Helper

在 WordPress 的設定中,找到 NGINX Helper 的設定頁面,並啟用以下選項:

  • Enable Cache Purge
  • Purge Entire Cache when a post or page is published

並設定你的 Nginx 快取路徑(如 /var/run/nginx-cache)。

4. 手動清除快取

若需要手動清除快取,可以直接在 NGINX Helper 的設定頁面點選 “Purge Entire Cache” 按鈕。

5. Nginx 設定更新

確保你的 Nginx 設定檔有啟用快取清除功能:

location ~ /purge(/.*) { fastcgi_cache_purge MYCACHE "$scheme$request_method$host$1"; }

6.重新加載 Nginx 以使新設定生效。Copy code

sudo systemctl reload nginx

安裝 Nginx 新版包含有ngx_cache_purge

1.備份配置

在進行任何更改之前,確保備份你當前的 Nginx 配置,以防止任何數據丟失。

sudo cp -r /etc/nginx /etc/nginx-backup

停止和卸載現有的 Nginx

首先,停止 Nginx 服務:

sudo systemctl stop nginx

然後,卸載 Ubuntu 的 Nginx 版本:

sudo apt-get purge nginx nginx-common nginx-full

下載 OpenSSL

wget -c https://www.openssl.org/source/openssl-3.0.11.tar.gz ; tar zxf openssl-3.0.11.tar.gz ; rm openssl-3.0.11.tar.gz

下載第三方模組

安裝 ngx_cache_purge

下載最新版本 https://github.com/nginx-modules/ngx_cache_purge/releases

wget https://github.com/nginx-modules/ngx_cache_purge/archive/refs/tags/2.5.3.tar.gz
tar -xvzf 2.5.3.tar.gz

ngx_brotli

git clone https://github.com/google/ngx_brotli.git
pushd ngx_brotli
git submodule update --init
popd

編譯 ngx_brotli

cd ~/ngx_brotli/deps/brotli/c
mkdir -p out
cmake ..
make

編譯和安裝 Nginx 1.2

如果你還沒有下載和編譯 Nginx 1.2,首先下載源代碼,然後編譯和安裝它:

sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev

wget https://nginx.org/download/nginx-1.24.0.tar.gz 

tar -xvzf nginx-1.24.0.tar.gz

cd nginx-1.24.0/

./configure --with-pcre=../pcre-8.45 \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-openssl=../openssl-3.0.11 \
--add-module=../ngx_brotli \
--add-module=../ngx_cache_purge-2.5.3 

make

sudo make install

預設情況下,自行編譯的 Nginx 會被安裝到 /usr/local/nginx

如果出現下面的錯誤

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

代表你apt-get install libpcre3 libpcre3-dev這邊出現問題

可以自行安裝 PCRE

wget https://ftp.exim.org/pub/pcre/pcre-8.45.tar.gz
tar -xvzf pcre-8.45.tar.gz

./configure --with-pcre=../pcre-8.45 \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-openssl=../openssl-3.0.11 \
--add-module=../ngx_brotli \
--add-module=../ngx_cache_purge-2.5.3 

如果出現gzip錯誤

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.

那可以自行安中 zlib

sudo apt-get update
sudo apt-get install zlib1g zlib1g-dev

如果出現 cannot find -lbrotlienc or cannot find -lbrotlicommon ,那需要安裝 Brotli

sudo apt update
sudo apt install libbrotli-dev

驗證 Brotli 是否安裝成功

ldconfig -p | grep brotli

檢查安裝是否成功

sudo /usr/local/nginx/sbin/nginx -V

配置系統啟動腳本

如果你希望 Nginx 在系統啟動時自動運行,你需要設置一個 systemd 服務文件或 init 腳本。由於你從源代碼編譯 Nginx,它不會自帶 systemd 服務文件,所以你可能需要自行創建。

恢復配置

從你之前備份的配置恢復設置:

sudo cp -r /etc/nginx-backup/* /usr/local/nginx/conf/

請注意,由於 Nginx 版本之間可能存在差異,所以你可能需要調整配置以使其與 Nginx 1.2 版本兼容。

啟動新的 Nginx

sudo /usr/local/nginx/sbin/nginx

要使 /usr/local/nginx/sbin/nginx 可在任何地方都能執行

使用符號鏈接

你可以在 /usr/bin/usr/sbin 中創建一個指向 /usr/local/nginx/sbin/nginx 的符號鏈接。這樣,由於 /usr/bin/usr/sbin 通常都在 $PATH 環境變量中,你就可以從任何地方執行 nginx 命令。

sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

修改 $PATH 變量

作為另一種方法,你可以將 /usr/local/nginx/sbin 目錄添加到 $PATH 環境變量中。這可以在你的 shell 啟動腳本中完成,例如 ~/.bashrc~/.profile。打開 ~/.bashrc 文件:

nano ~/.bashrc

在文件末尾添加以下行:

export PATH=$PATH:/usr/local/nginx/sbin

然後,重新加載 .bashrc 以應用更改:

source ~/.bashrc

管理 Nginx

你可以直接從GitHub下載nginx-startup-script-for-debian-ubuntu.sh至你的『/etc/init.d』目錄,並將名稱更改為『nginx』。

sudo wget -O /etc/init.d/nginx https://raw.githubusercontent.com/KJieGitHub/Nginx/master/nginx-script/nginx-startup/nginx-startup-script-for-debian-ubuntu.sh
sudo chmod +x /etc/init.d/nginx
sudo systemctl daemon-reload
sudo systemctl start nginx
sudo update-rc.d -f nginx defaults

實用管理命令

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx

實用連結

Nginx 版本以及下載連結

https://nginx.org/en/download.html

Nginx 第三方模組

NGINX 3rd Party Modules

參考資料

https://www.kjnotes.com/devtools/83

https://github.com/FRiCKLE/ngx_cache_purge

完整版本的 Nginx Config

proxy_cache_path /var/run/proxy_cache/ levels=1:2 keys_zone=demo-proxy:10m max_size=1000m inactive=600m use_temp_path=off;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

server {
		listen 80;
        server_name yoursite;

        proxy_cache demo-proxy;
        proxy_cache_valid 200 1d;
        
        #設定上傳的檔案大小
        client_max_body_size 64M;

        set $skip_cache 0;
        add_header X-Cache $upstream_cache_status;

        if ($request_method = POST) {
            set $skip_cache 1;
        }

        if ($query_string != "") {
            set $skip_cache 1;
        }

        if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|^/feed/*|/tag/.*/feed/*|index.php|/.*sitemap.*\.(xml|xsl)") {
            set $skip_cache 1;
        }

        if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+wp-postpass|wordpress_no_cache|wordpress_logged_in") {
            set $skip_cache 1;
        }

        location / {
                proxy_cache_bypass $skip_cache;
                proxy_no_cache $skip_cache;

                proxy_hide_header X-Frame-Options;
                proxy_pass http://X.X.X.X:X;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_cache        demo-proxy;
                proxy_cache_key    $uri$is_args$args;

        }

    location ~ /purge(/.*) {
        allow 127.0.0.1; 
        proxy_cache_purge  demo-proxy $1$is_args$args;
    }
}
體驗無窮創意:Metademolab 與動畫插畫的魔幻交融

體驗無窮創意:Metademolab 與動畫插畫的魔幻交融

在當前的數位藝術領域,技術的進步讓我們能以更多不同的方式表達創意與想像。Metademolab正是這技術浪潮中的一個耀眼明星,它提供了一個獨特而引人入勝的平台,讓用戶能將他們的繪畫或插畫轉變為生動有趣的2D動畫。並且——重點來了——它是完全免費的!

Metademolab 製作步驟

將繪畫變成動畫的神奇旅程

Metademolab背後的科技可以從一張靜態圖片中識別並分析出動畫人物的“骨架結構”。一旦你上傳了一張插畫或繪畫,平台就開始掃描圖像,識別出其中的角色,並透過先進的算法理解其骨架和動作機制。接著,它會根據這個骨架系統為你的角色產生各種動態動作。

不僅如此,這個過程的美妙之處在於你可以無盡地調整與自訂這些動作,打造出一個真正屬於你自己的動畫故事。

創造你自己的動畫世界

在你的角色被賦予生命開始活動之後,Metademolab還允許你為動畫加入背景。你可以選擇現有的背景,或者上傳一個自己創建的場景。平台提供了一系列的工具和選項,讓你能將角色和背景完美融合,創造出一個協調統一的動畫世界。

不只是融合,你也可以透過簡單直觀的界面調整角色與背景之間的互動,創造出更加豐富多元的故事情節。


無盡的創意可能

Metademolab打開了一扇新窗,讓所有愛好繪畫的人都能輕鬆跨入動畫製作的領域。它不僅僅是一個工具,更是一個可以讓你的創意得以無窮拓展的平台。不論你是想要製作一個生動的個人頭像,還是一部充滿想像的動畫短片,Metademolab都能夠為你提供強大的支持和無限的可能。

後話

Metademolab將傳統藝術和先進科技完美結合,為藝術創作者提供了一個無與倫比的平台,將他們的作品轉化為動畫並帶入自己設計的世界。在這個平台上,每一個創意都可以得到展現,每一個故事都將變得生動起來。

此技術不僅提供了一個新的藝術創作領域,也為我們進入虛擬世界提供了一個新的、富有創意的方式。在Metademolab的世界裡,每一個人都可以是一個動畫師,每一個創意都能成為現實。

參考YT

延伸閱讀

AI 簡報指日可待!除了 ChatGPT,職場菁英必配 Tome 來自動化簡報製作

AI 簡報指日可待!除了 ChatGPT,職場菁英必配 Tome 來自動化簡報製作

身為職場戰士的你,在簡報製作時,是否常在內容創作和排版設計中感到困擾?

現在就讓我們來深入探討 AI 簡報自動生成軟體 Tome 的特色與使用方法,保證讓你在一分鐘內創建出既美觀又充滿內容的簡報!

由 AI 設計來表達想法

不再看著那個空白的頁面發呆,可以從任何提示開始,生成一頁廣告、一場演示、一個情緒版面等等。Tome 給你大綱和選擇來回應,如此你可以找到表達你思考的最佳方式。

展開細節

使用 AI 來確定你寫作的正確語氣和措辭,並且創建完美的圖片,在網路上搜尋參考資料,將你的故事以你想像的方式呈現出來。

為你的工作增加結構和光澤

Tome 可以快速而輕鬆地轉換你已經完成的工作。只要將一個文件上傳,Tome 會自動從你的文本中建構一個敘述,並生成匹配的圖像以點亮你的觀點。

Tome 可以做甚麼?

  1. 自動生成簡報內容
  2. 自動生成圖片
  3. 整合多種數位工具

延伸閱讀

ChatBA:讓AI助力簡報生成

ChatBA:讓AI助力簡報生成

在現代工作環境中,製作漂亮而專業的簡報是一項不可或缺的任務。然而,這通常需要大量的時間和設計技巧,這對於許多人來說可能是一項挑戰。但現在,有一個強大的AI工具可以幫助您在幾分鐘內生成簡報,而無需親自處理設計細節。

這個工具就是ChatBA

ChatBA的功能和優勢

ChatBA是一個利用OpenAI的API創建的生成式AI工具,旨在幫助用戶輕鬆創建簡報。不過由於高需求,工具的使用可能受到一定的限制,但用戶仍然可以嘗試使用已緩存的示例提示。ChatBA專為那些需要快速生成簡報而不願自己動手設計的用戶而設計。

如何使用ChatBA

ChatBA使用用戶提供的提示或主題來生成簡報,從而使用戶能夠專注於創建內容,而無需擔心設計方面的問題。它就像一個聊天機器人,利用人工智能來創建簡報。用戶可以使用特定的問題或主題來引導系統,它將生成與輸入緊密相關的簡報。

多重用途的ChatBA

這對於經常需要進行演示的專業人士或需要在多個簡報之間保持一致格式的簡報製作者特別有用。ChatBA提供了廣泛的提示選擇,允許用戶在各種不同的主題和興趣領域創建簡報。它可以節省用戶大量的時間和精力,是那些希望簡化工作流程的人的絕佳工具。

專業設計的結果

不僅如此,ChatBA還可以用於為用戶可能不了解的主題或時間緊迫的演示創建簡報。最終生成的簡報設計專業,簡潔大氣,可以讓您的演示更具吸引力和說服力。

它通過簡化設計過程,使用戶能夠更加專注於內容創作,從而提高了工作效率。無論您是商業演講者、作家還是房地產市場的專業人士,都可以受益於這個令人印象深刻的工具。現在,AI也能為您的演示提供支持,讓您輕鬆製作出令人讚嘆的簡報。

探索Getimg.ai:創建商業級圖像和個性化AI模型

探索Getimg.ai:創建商業級圖像和個性化AI模型

在當今數位化世界中,人工智慧(AI)技術正日益成為藝術和設計領域的一個重要驅動力。

其中一個引人矚目的工具就是Getimg.ai,這是一個提供多種圖像生成和修改功能的平台。

在本文中,我們將深入探討Getimg.ai的核心功能和用例,以及如何開始使用這個令人驚嘆的工具,同時回答一些常見的問題。

Getimg.ai的核心功能

1. 用圖生圖

Getimg.ai的一個令人印象深刻的功能是,它允許您使用圖像生成更多圖像。這意味著您可以將現有圖像作為基礎,快速生成相似或有趣的變體,無需繼續訓練模型。

2. 無需練模,使用SD

相對於需要冗長的模型訓練過程,Getimg.ai讓您無需練模,即刻使用。這省去了大量時間和資源,讓您可以專注於創作,而不是等待模型訓練完成。

3. 融合Leonardo功能

Leonardo是Getimg.ai的一個強大元素,它提供了更多創作選項。您可以融合Leonardo的功能,使您的圖像生成更具藝術性和創意。

4. 輕鬆用ControlNet控制圖片

Getimg.ai引入了ControlNet,這讓您能夠更精確地控制圖片的生成過程。無論您是調整色彩、樣式還是其他參數,ControlNet使您可以實現完全個性化的圖像生成。

Getimg.ai的用例

  • 藝術創作: 藝術家可以利用Getimg.ai來快速生成藝術品的變體,並探索新的創作方向。
  • 設計項目: 設計師可以使用Getimg.ai來生成設計項目所需的圖像,節省時間並提高效率。
  • 動畫製作: 動畫製作者可以使用Getimg.ai生成動畫素材,增添動畫項目的視覺吸引力。
  • 建築概念: 建築師可以利用Getimg.ai創建建築概念圖,幫助客戶更好地理解他們的項目。
  • 商業項目: 您可以將Getimg.ai生成的圖像用於商業項目,但請牢記CreativeML Open RAIL-M許可證的適用性。

常見問題

– 我可以將生成的圖像用於商業項目嗎?

是的,您可以商業用途使用生成的圖像。但請注意,CreativeML Open RAIL-M許可證適用於創建的圖像。

– 如何生成美麗的圖像?

大多數情況下,簡單的提示可能不足以獲得優秀的結果。但是,寫出好的提示是可以學習的。您可以開始閱讀OpenArt提示手冊,以瞭解如何編寫有效的提示。

– Getimg.ai真的免費嗎?

是的,它是免費的。您每個月可以免費生成100張圖像,只需創建一個帳戶。此外,您還可以通過引薦朋友和追隨者來獲得更多的積分。

延伸閱讀