雲主機建好 LAMP 之後,接下來最重要的是建立 L3 及 L4 防火牆規則,把一些爬蟲、代理池與高風險國家 IP 區段封鎖,減輕硬碟的 I/O 壓力。 不然每隔幾秒就來一次請求,就算 L7 應用層有高階防爬蟲機制,還是會消耗雲主機的算力。 當然最好是在路由端用硬體防火牆清洗,但因為是雲主機沒有實體路由,因此改用 Linux kernel 層級的黑名單系統 ipset 也能達到 L3 與 L4 清洗效果,讓 Apache/PHP 完全碰不到,不吃 CPU、不吃 I/O。 經過實際執行、爆肝測試後,去除所有失敗方法,以下為正確建立ipset 黑名單的方法: 1、建立 ipset sudo ipset create blacklist hash:ip 如果看到: ipset v7.x.x: Set cannot be created: already exists 代表曾經建立過,需要 destroy。 如果返回: Command 'ipset' not found, but can be installed with: apt install ipset 表示 Linux 初始環境沒有預裝 ipset,輸入以下指令安裝: sudo apt update sudo apt install ipset -y 完成後驗證: ipset list 如果返回: ipset v7.x.x: The set with the given name does not exist 表示 ipset 已成功安裝(但還沒建立 blacklist)。 2、建立一份「只有網段」的列表檔 輸入指令建立 sudo nano /root/blacklist.txt 貼上以下內容(改成您自己的IP名單) 1.0.1.0/24 1.0.2.0/23 1.0.8.0/21 1.0.32.0/19 (略…) Ctrl+O 儲存 → Enter 確認 → Ctrl+X 返回。注意:一定要用 nano 建立,避免 BOM/CRLF 問題。 3、建立自動載入腳本 輸入指令建立 sudo nano /usr/local/bin/ipset-load.sh 貼入以下腳本 #!/bin/bash # 建立 blacklist(若存在就忽略) ipset create blacklist hash:net...
完成雲主機 LAMP 架設後,下一步就是把 DNS 指向新空間。但此時你可能會遇到一個常見問題: www.website.com 可以進入網站 website.com 也能進入網站 伺服器 IP 也能直接打開網站 等於一個網站有三個入口。 這會造成: 搜尋引擎收錄混亂(www / non-www / IP 三份內容) SEO 分數被分散 資料表的網址寫入不一致(有 www、有 IP、沒 www 都混在一起) 因此,我們需要建立 VirtualHost 來統一入口,讓所有訪問都自動轉向單一網址(正規化 Domain),方法如下: 1、建立 VirtualHost 設定檔 sudo nano /etc/apache2/sites-available/default_host.conf 貼上以下內容(http): <VirtualHost *:80> ServerName website.com ServerAlias www.website.com RewriteEngine On # 不管是 website.com、www.website.com、或 IP / 其它 Host # 一律丟到 https://website.com RewriteRule ^/(.*)$ https://website.com/$1 [L,R=301] </VirtualHost> 請把 website.com 改成你自己的網址 。 如果有啟用SSL功能(https),請再增加443部分 <VirtualHost *:443> ServerName website.com ServerAlias www.website.com RewriteEngine On DocumentRoot /var/www/html # 如果有資料夾要轉首頁一併處理 RewriteCond %{REQUEST_URI} ^/ folder (/...