Category: Apache / Nginx

RHEL / CentOS 建立 Apache 虛擬主機

要在一部主機上面存放多個網站, 可以透過 Apache 的 Virtual Host 實現。以下會示範在 RHEL 及 CentOS 建立 Apache Virtual Host 的方法。在開始前, 先要建立存放網站的目錄, 即 Document Root, 在 CentOS 下 Apache 的預設目錄是 /var/www/html, 以下會以 website01.com 及 website02.com 為例, …

RHEL / CentOS 安裝 mod_security

mod_security 是 Apache 的保安模組,可以預防多種針對網頁的攻擊,例如執行遠端程式碼, SQL Injection,路徑掃瞄等。以下是在 RHEL 及 CentOS 安裝 mod_security 的方法:1. 安裝 mod_security 所需套件: # yum install gcc make httpd-devel libxml2 pcre-devel libxml2-devel curl-devel git 2. 下載 mod_security 最新的穩定版源碼,進行編譯及安裝: …

Apache 限制上傳檔案大小

在 Apache 裡面有一個選項是 LimitRequestBody,這個選項可以限制用戶送出的 HTTP 請求內容。這個選項可以在 .htaccess 或 httpd.conf 裡使用,而如果在 httpd.conf 內使用,分別可以用在 virtualhost 或目錄屬性設定。而 LimitRequestBody 的設定值是介乎 0 (無限制) 至 2147483647 (2GB)。例如要在目錄 /home/httpd/html/www.mydomain.com/uploads 設定上傳限制為 100K,可以在 .htaccess 或 httpd.conf 加入以下語句: LimitRequestBody 102400 …

.htaccess 轉址

.htaccess 可以改變 Apache 對目錄的設定, 其中一個十分常用的地方是轉址, 以下是 .htaccess 常用轉址例子:301 永久轉址: 302 臨時轉址 將檔案轉到指定檔案位置 將沒有 www 的網址轉到 www 開頭網址: 將 www 開頭的網址轉到沒有 www 網址: 將所有不是 new-domain.com 轉到 new-domain.com

[Perl Script] – 自動刪除 Apache 舊記錄檔

上一篇文章 Apache Log Rotate 設定 講述了 Apache 輪替記錄檔的方法, 但如果舊日誌一直不理的話, 同樣佔據碟碟空間, 因為 Apache 不會刪除舊記錄檔, 而且將新記錄寫入新建立的檔案, 以下 Perl Script 可以自動刪除舊記錄檔, 只要設定好記錄檔目錄, 名稱後, 放到 crontab 執行便可以了。 這個 Perl Script 會掃瞄記錄檔目錄, 並查看檔案名稱為是 access …

Apache Log Rotate 設定

Apache log 裡面包含有很多有用資訊, 包括偵測攻擊行為及正常存取量等, 但如果一直不理會記錄檔的話, 會佔用很多硬碟空間, 所以設定 log rotate 是必須的, Apache 內建 rotatelogs 工具可以做 log rotate, 實現方法如下:1. 開啟 httpd.conf, 找到 CustomLog 及 ErrorLog 的設定行.2. 例如原來 CustomLog 及 ErrorLog 寫成: CustomLog …

Apache 2.4 安裝 mod_evasive

在 Apache 2.4 編譯 mod_evasive 時遇到以下錯誤:mod_evasive20.c: In function ‘access_checker’: mod_evasive20.c:142: error: ‘conn_rec’ has no member named ‘remote_ip’ mod_evasive20.c:146: error: ‘conn_rec’ has no member named ‘remote_ip’ mod_evasive20.c:158: error: ‘conn_rec’ has no …

Apache 2.4 的 VirtualHost 設定

Apache 剛從 2.2 升級到 2.4, 在 Apache 2.4 的 VirtualHost 設定不同以前, 新語法更簡單易用:舊設定方法: <VirtualHost 123.242.230.29>    ServerName testing.testing.com    DocumentRoot /var/www/html </VirtualHost>Apache 2.4 設定方法 <VirtualHost *:80>    ServerName testing.testing.com    DocumentRoot …

將 .htaccess 檔案改名

.htaccess 可以改變很多網站的設定,這也造成一個安全性的問題,因為有心人都會估計到網站可能會用 .htaccess,如果未有對 .htaccess 進行權限設定,所有人都可以瀏覽 .htaccess 的內容。除了變更權限外,也可以設定 Apache 讀取其他檔案名稱,那麼其他人便不會那麼容易知道設定檔的位置,但這個方法需要編輯 httpd.conf 才可以實現。在 Apache 建立的 virtualhost 裡面,只要加入 “AccessFileName” 便可以自訂設定檔的名稱,例如:AccessFileName .htaccess.hidden以上語句會指定 .htaccess.hidden 代替原本的 .htaccess 檔案。