
Merecat最初是在Mongoose的雙關語中,但現在可用於實際的Web服務目的。但是,這不是一個真正的Meerkat,而是另一個模仿貓,它是從Jef Poskanzer創建的Great Thttpd分配的。
Merecat HTTPD擴展了THTTPD最初提供的功能,但仍有一個有限的功能集:
.htpassd和.htaccess支持php-cgi (如果在merecat.conf中啟用)由此產生的足跡(〜140 KIB)使其快速,適合小型和嵌入式系統!
Merecat可作為簡化的2條BSD許可證的免費/開源軟件提供。有關更多信息,請參見“手冊” merecat(8)或FAQ。
其餘的讀數涵蓋了一些基本功能和建議。有關更多深入的用例示例,請參見以下howtos:
嘗試使用簡單部署的Docker Merecat安全隔離。
要在您的~USERNAME/public_html/中保護目錄,請使用隨附的htpasswd工具創建文件.htpasswd :
user@example: ~ / > cd public_html/Downloads
user@example: ~ /public_html/Downloads/ > htpasswd -c .htpasswd friend
Changing password for user friend
New password: *****
Re-type new password: *****使用configure腳本啟用此功能和用戶主目錄。在下面的“功能”部分中查看有關此信息的更多信息。
在服務器上設置虛擬主機可能與其他Web服務器有點麻煩。使用Merecat,您只需為Web Server root中的每個主機創建目錄:
/var/www/
|-- icons/
|-- cgi-bin/
|-- errors/
| `-- err404.html
|-- ftp.example.com/
`- www.example.com/
edit /etc/merecat.conf :
virtual-host = true
cgi "/cgi-bin/*|**.cgi" {
enabled = true
}
現在,Web Server root, /var/www/不再提供文件,只有虛擬主機目錄執行,在icons/ , cgi-bin/和errors/的共享文件中執行。
在Linux上,綁定安裝座可用於設置FTP和Web訪問相同文件。示例/etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
優化Web服務器的性能有很多技巧。最重要的之一是瀏覽器緩存。 Merecat支持ETag:和Cache-Control:但是要啟用後者,您需要在/etc/merecat.conf中定義max-age設置:
max-age = 3600 # One hour
該值完全取決於站點。對於嵌入式系統,您可能需要將其設置為最大值,而對於其他情況,您可能需要其他東西。默認情況下,這將被禁用(0)。
另一個技巧是採用gzip壓縮。 Merecat擁有為HTML,CSS和其他text/*文件提供內置支持,如果有同一文件的.gz版本。這是如何壓縮相關文件的示例:
root@example: ~ / > cd /var/www/
root@example:/var/www/ > for file in ` find . -name ' *.html ' -o -name ' *.css ' ` ; do
gzip -c $file > $file .gz ; done這種方法比讓Merecat即時“放氣”文件更友好,否則它可以做到。
如果已安裝了configure找到OpenSSL,則可以啟用HTTPS支持,可以使用--without-ssl禁用。但是,要訪問SSL/TLS設置,您還需要支持merecat.conf ,因此您必須安裝LibConfuse。有關所有構建要求,請參見下文。
默認情況下,HTTPS支持具有SSLV2,SSLV3和TLSV1(硬編碼)。只有TLSV2及以後才能按照客戶端啟用和協商。
要為HTTPS設置MERECAT,必須啟用以下/etc/merecat.conf設置:
server secure {
port = 443
ssl {
certfile = /etc/letsencrypt/live/example.com/fullchain.pem
keyfile = /etc/letsencrypt/live/example.com/privkey.pem
dhfile = /etc/letsencrypt/live/example.com/dhparam.pem
}
}
Merecat完全支持我們的加密證書,包括HTTP-01續訂。使用服務器位置指令:
server default {
port = 80
location "/.well-known/acme-challenge/**" {
path = "letsencrypt/.well-known/acme-challenge/"
}
redirect "/**" {
code = 301
location = "https://$host$request_uri$args"
}
}
該path必須相對於服務器根目錄。使用綁定安裝座獲取/var/lib/letsencrypt進入服務器根。這樣,我們可以確保certbot僅寫入自己的目錄,並且不能寫入服務器根中的任何文件。
然後使用以下參數運行certbot ,然後添加您要支持Merecat的所有虛擬主機:
root@example:/var/www/ > certbot certonly --webroot --webroot-path /var/lib/letsencrypt如何看:
要創建一個自簽名的證書並啟用完美的前向保密,PFS,即Diffie-Helman參數(可選),請使用openssl工具,如下所示。請注意,大多數證書設置都在openssl.cnf中使用子殼,更重要的是注意到使用subjectAltName或san。當今大多數瀏覽器都需要後者。
root@example:/var/www/ > mkdir private certs
root@example:/var/www/ > openssl req -x509 -newkey rsa:4096 -nodes
-keyout private/server.key -new -out certs/server.pem
-subj /CN=www.acme.com -reqexts SAN -extensions SAN
-sha256 -days 3650 -config <( cat /etc/ssl/openssl.cnf
<( printf ' [SAN]nsubjectAltName=DNS:www.acme.com ' ) )
root@example:/var/www/ > openssl dhparam -out certs/dhparm.pem 4096對於具有兩台服務器的設置,可以使用以下示例在端口4443上運行HTTP,端口8080上的HTTP,並在任何訪問上重定向到HTTPS服務器:
server secure {
port = 4443
ssl {
certfile = certs/server.pem
keyfile = private/server.key
dhfile = certs/dhparm.pem
}
}
server default {
port = 8080
redirect "/**" {
code = 303
location = "https://$host:4443$request_uri$args"
}
}
支持的HTTP重定向代碼為:301、302、303和307。
位置設置支持三個NGINX樣式變量,如示例所示。請注意圍繞模式的引號,或者.conf解析器會認為該模式是C風格的評論。
Merecat取決於一些外部庫,如果啟用了,例如OpenSSL,Zlib和LibConfuse。在Debian/Ubuntu系統上,您可以使用以下方式安裝依賴項:
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev如果您構建deps。從源來看,他們可能默認使用/usr/local的安裝前綴。非debian/ubuntu系統很少支持此GNU標準,因此,您將其引用Merecat configure腳本:
user@example: ~ /merecat/ > PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig ./configure在不支持/etc/merecat.conf的情況下構建Merecat:
user@example: ~ /merecat/ > ./configure --without-config如果您從git來源建造而不是發布的tarball,請記住:
user@example: ~ /merecat/ > ./autogen.sh要將httpd安裝到/usr/sbin/ ,將默認索引和圖標安裝到/var/www中,然後配置文件到/etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
user@example: ~ /merecat/ > make
user@example: ~ /merecat/ > sudo make install通過將--host標誌設置為配置腳本,可以為另一個目標進行交叉編譯Merecat。 GNU文檔中有很好的記錄。注意:通常會自動檢測到--build系統。
默認情況下,Merecat構建是無聲的。對於詳細的編譯器輸出,禁用使用
configure --disable-silent-rules,或用make V=1構建。
Merecat由前端merecat.c和獨立的HTTP庫libhttpd.c組成,可以以各種方式調整該庫,並在需要時將其嵌入Web服務器(如果需要)。
最常見的選項可從merecat命令行和merecat.conf配置文件獲得。可以使用configure腳本啟用其他較不常見的選項:
--enable-builtin-icons Enable built-in icons for dir listings
--enable-htaccess Enable .htaccess files for access control
--enable-htpasswd Enable .htpasswd files for authentication
--enable-public-html Enable $HOME/public_html as ~USERNAME/
--enable-msie-padding Add padding to error messages for Internet Explorer
--disable-dirlisting Disable directory listings when no index file is found
--without-config Disable /etc/merecat.conf support using libConfuse
--without-ssl Disable HTTPS support, default: enabled
--without-symlinks Disable httpd and in.httpd symlinks to merecat
--without-zlib Disable mod_deflate (gzip) using zlib
源文件merecat.h具有更多可以調整的功能,其中一些在MAN頁面中提到,但是標頭文件也具有非常有用的註釋。
Merecat是STHTTPD的叉叉,在網絡周圍發現了許多丟失的補丁。 STHTTPD項目依次是原始THTTPD的叉子-Tiny/Turbo/Throttling HTTP服務器。