
Merecat comenzó como un juego de palabras en Mongoose, pero ahora es útil para fines de servicio web reales. Sin embargo, no es un sukatal real, simplemente otro imitador, bifurcado del gran thttpd creado por Jef Poskanzer.
MERECAT HTTPD se expande en las características que ofrece originalmente THTTPD, pero aún tiene un conjunto de características limitado:
.htpassd y .htaccessphp-cgi si está habilitado en merecat.conf¡La huella resultante (~ 140 KIB) la hace rápida y adecuada para sistemas pequeños e integrados!
MERECAT está disponible como software gratuito/de código abierto bajo la licencia BSD de 2 cláusulas simplificada. Para obtener más información, consulte la página Manual merecat(8) , o las preguntas frecuentes.
El resto de este ReadMe cubre algunas funciones y recomendaciones básicas. Para obtener más ejemplos de caso de uso en profundidad, consulte los siguientes Howtos:
Pruebe Docker Merecat aislado de forma segura del resto del sistema, con fácil implementación.
Para proteger un directorio en su ~USERNAME/public_html/ , cree el archivo .htpasswd usando la herramienta htpasswd incluida:
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: ***** Habilite esta función y directorios de inicio del usuario, con el script configure . Vea más sobre esto en la sección de características a continuación.
Configurar hosts virtuales en un servidor puede ser una molestia con otros servidores web. Con Merecat simplemente crea directorios para cada host en la raíz del servidor web:
/var/www/
|-- icons/
|-- cgi-bin/
|-- errors/
| `-- err404.html
|-- ftp.example.com/
`- www.example.com/
Editar /etc/merecat.conf :
virtual-host = true
cgi "/cgi-bin/*|**.cgi" {
enabled = true
}
Ahora la raíz del servidor web, /var/www/ , ya no sirve archivos, solo los directorios de host virtuales hacen, ejecutar los archivos compartidos en icons/ , cgi-bin/ y errors/ .
En los montajes de enlace de Linux se pueden usar para configurar FTP y acceso web a los mismos archivos. Ejemplo /etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
Hay muchos trucos para optimizar el rendimiento de su servidor web. Uno de los más importantes es el almacenamiento en caché del navegador. MERECAT admite tanto ETag: y Cache-Control: para habilitar este último, necesita definir la configuración max-age en /etc/merecat.conf :
max-age = 3600 # One hour
El valor depende completamente del sitio. Para un sistema integrado, es posible que desee establecerlo en el valor máximo, mientras que para otros escenarios probablemente desee algo más. Por defecto, esto está deshabilitado (0).
Otro truco es emplear la compresión gzip . Merecat tiene soporte incorporado para servir HTML, CSS y otros archivos text/* si hay una versión .gz del mismo archivo. Aquí hay un ejemplo de cómo comprimir archivos relevantes:
root@example: ~ / > cd /var/www/
root@example:/var/www/ > for file in ` find . -name ' *.html ' -o -name ' *.css ' ` ; do
gzip -c $file > $file .gz ; doneEste enfoque es más amigable con la CPU que dejar que Merecat "desinflara" los archivos sobre la mosca, lo que de otra manera hace.
Si configure Finds OpenSSL instalado, el soporte HTTPS está habilitado, esto se puede deshabilitar usando --without-ssl . Sin embargo, para obtener acceso a la configuración SSL/TLS, también necesita soporte para merecat.conf , por lo que debe instalar libconfuse. Consulte a continuación todos los requisitos de compilación.
El soporte HTTPS tiene SSLV2, SSLV3 y TLSV1 deshabilitado (codificado) de forma predeterminada. Solo TLSV2 y luego se habilitarán y negociarán por cliente.
Para configurar MERECAT para https, se debe habilitar la siguiente /etc/merecat.conf Configuración:
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 es compatible con los certificados de encriptación, incluidas las renovaciones HTTP-01. Use la Directiva de ubicación del servidor:
server default {
port = 80
location "/.well-known/acme-challenge/**" {
path = "letsencrypt/.well-known/acme-challenge/"
}
redirect "/**" {
code = 301
location = "https://$host$request_uri$args"
}
}
La path debe ser relativa al directorio raíz del servidor. Use montajes de enlace para obtener /var/lib/letsencrypt en la raíz de su servidor. De esta manera, podemos garantizar que certbot solo escriba en su propio directorio y no pueda escribir en ningún archivo en la raíz del servidor.
Luego ejecute certbot con los siguientes argumentos y luego agregue todos los hosts virtuales que desea admitir desde MERECAT:
root@example:/var/www/ > certbot certonly --webroot --webroot-path /var/lib/letsencryptPara un cómo ver:
Para crear un certificado autoinfirmado y habilitar el secreto perfecto para reenviar, PFS, es decir, los parámetros Diffie-Helman (opcional), use la herramienta openssl como se muestra a continuación. Observe el uso de una subheca con openssl.cnf donde la mayoría de las configuraciones del certificado están, y lo más importante es que note el uso de subjectAltName , o SAN. La mayoría de los navegadores requieren este último.
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 4096Para una configuración con dos servidores, el siguiente ejemplo se puede usar para ejecutar HTTPS en el puerto 4443, HTTP en el puerto 8080 y redirigir al servidor HTTPS en cualquier acceso:
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"
}
}
Los códigos de redirección HTTP compatibles son: 301, 302, 303 y 307.
La configuración de ubicación admite tres variables de estilo Nginx como se muestra en el ejemplo. Tenga en cuenta las citas sobre el patrón, o el analizador .conf pensará que el patrón es un comentario al estilo C.
Merecat depende de algunas bibliotecas externas, si está habilitada, por ejemplo, OpenSSL, ZLIB y LibConfuse. En los sistemas Debian/Ubuntu puede instalar las dependencias con:
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev Si construyes el Deps. Desde la fuente, pueden usar un prefijo de instalación de /usr/local . Los sistemas no Debian/Ubuntu rara vez admiten este estándar de GNU, por lo que así es como lo hace referencia para el script configure de Merecat:
user@example: ~ /merecat/ > PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig ./configure Para construir merecat sin soporte para /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --without-configSi construye a partir de fuentes Git y no un tarball lanzado, recuerde:
user@example: ~ /merecat/ > ./autogen.sh Para instalar httpd en /usr/sbin/ , índice predeterminado e iconos en /var/www , y config el archivo a /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
user@example: ~ /merecat/ > make
user@example: ~ /merecat/ > sudo make install La compilación cruzada de Merecat para otro objetivo es posible establecer el indicador --host en el script de configuración. Esto está bien documentado en la documentación de GNU. Nota: Por lo general, el sistema --build se detecta automáticamente.
Las construcciones de Merecat están en silencio de forma predeterminada. Para una salida de compilador detallada, deshabilite el modo silencioso con
configure --disable-silent-ruleso construir conmake V=1.
Merecat consiste en un front-end, merecat.c , y una biblioteca HTTP independiente, libhttpd.c , que se puede ajustar de varias maneras y usarse para integrar un servidor web en otra aplicación si es necesario.
Las opciones más comunes están disponibles en la línea de comandos merecat y el archivo de configuración merecat.conf . Otras opciones menos comunes se pueden habilitar utilizando el script 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
El archivo fuente merecat.h tiene aún más funciones que se pueden ajustar, algunas de ellas se mencionan en la página del hombre, pero el archivo de encabezado también tiene comentarios muy útiles.
Merecat es un bifurcado estichado de Sthttpd con muchos parches perdidos que se encuentran en la web. El proyecto STHTTPD a su vez es una horquilla del THTTPD original: el servidor HTTP Tiny/Turbo/Stottling.