2022-01-30 08:46:41 +11:00
|
|
|
%
|
2022-06-24 12:19:32 +11:00
|
|
|
% Chapitre un peu en vrac :)
|
2022-01-30 08:46:41 +11:00
|
|
|
%
|
|
|
|
\chapter{Web servers}
|
|
|
|
|
|
|
|
% ==============================================================
|
2024-03-11 12:20:47 +11:00
|
|
|
\section{Apache, Nginx} \index{Apache} \index{nginx}
|
2022-06-24 12:19:32 +11:00
|
|
|
|
|
|
|
Apache (\textsl{A patchy server} et Nginx sont de grands classiques,
|
|
|
|
voire même, dans le cas d'Apache, un grand ancien.
|
2022-01-30 08:46:41 +11:00
|
|
|
|
2022-06-24 12:19:32 +11:00
|
|
|
Que nous ne verrons pas pour le moment. Je vais plutôt me concentrer
|
|
|
|
sur un autre serveur : \texttt{lighthttp}, pour passer ensuite à quelque
|
2024-03-11 12:20:47 +11:00
|
|
|
chose d'encore plus bas-niveau qui demandera quelques connaissances en C.
|
2022-01-30 08:46:41 +11:00
|
|
|
|
|
|
|
|
|
|
|
% ==============================================================
|
|
|
|
\section{Lighttpd} \index{Lighttpd}
|
|
|
|
|
2024-03-11 12:20:47 +11:00
|
|
|
Un outsider ? Non, pas vraiment. Probablement plus léger que
|
|
|
|
les classiques, il a quelques fonctions assez interessantes.
|
|
|
|
Je vais faire un rapide survol des \textsl{tricks} à connaitre
|
|
|
|
pour une mise en œuvre de bon aloi. Et pour ça, je vais
|
|
|
|
d'abord me concentrer sur un cas précis~:
|
|
|
|
l'exécution de scripts CGI\index{CGI} écrits en Perl\index{Perl}
|
|
|
|
depuis le répertoire \texttt{\$HOME/public\_html/} des yusers.
|
2022-01-30 08:46:41 +11:00
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
root@ramen:~# lighty-enable-mod userdir
|
|
|
|
Enabling userdir: ok
|
|
|
|
Run "service lighttpd force-reload" to enable changes
|
|
|
|
root@ramen:~# service lighttpd force-reload
|
|
|
|
root@ramen:~#
|
|
|
|
\end{verbatim}
|
|
|
|
|
2022-04-03 20:56:49 +11:00
|
|
|
\textbf{Q:} Sur une installation fraiche, la racine du site est
|
2024-03-11 12:20:47 +11:00
|
|
|
en erreur 403\index{403} ?
|
2022-04-03 20:56:49 +11:00
|
|
|
\textbf{R:} Par défaut le listing des répertoires vides
|
|
|
|
(sans \texttt{index.html}) est interdit. Pour changer ça, il faut
|
|
|
|
\texttt{\# lighttpd-enable-mod dir-listing} et
|
|
|
|
\texttt{\# service lighttpd force-reload}, voilà.
|
|
|
|
|
2022-10-05 15:08:23 +11:00
|
|
|
Question : comment forcer le \texttt{Content-Type} pour un type particulier
|
|
|
|
de fichier ? Par exemple text/plain pour les fichiers \texttt{.POV} ?
|
|
|
|
|
2024-03-11 12:20:47 +11:00
|
|
|
% ------------------------------------------------
|
|
|
|
|
|
|
|
\subsection{Filtrages}
|
|
|
|
|
|
|
|
In case you need to do this with lighttpd (you can have multiple of
|
|
|
|
these for each useragent you want to match, or you can make one big regex
|
|
|
|
if you want):
|
|
|
|
\texttt{\$HTTP["useragent"] =~ "Amazonbot" \{ url.access-deny = ("") \}}
|
2022-06-24 12:19:32 +11:00
|
|
|
|
2022-01-30 08:46:41 +11:00
|
|
|
% ==============================================================
|
|
|
|
|
|
|
|
\section{Custom made}
|
|
|
|
|
2022-06-24 12:19:32 +11:00
|
|
|
|
2022-01-30 08:46:41 +11:00
|
|
|
\begin{verbatim}
|
|
|
|
tth@ramen:~/Houba/Fractales90$ apt show libmicrohttpd12
|
|
|
|
Package: libmicrohttpd12
|
|
|
|
Version: 0.9.72-2
|
|
|
|
Priority: optional
|
|
|
|
Section: libs
|
|
|
|
Source: libmicrohttpd
|
|
|
|
Maintainer: Daniel Baumann <daniel.baumann@progress-linux.org>
|
|
|
|
Installed-Size: 211 kB
|
|
|
|
Depends: libc6 (>= 2.17), libgnutls30 (>= 3.7.0)
|
|
|
|
Homepage: https://www.gnu.org/software/libmicrohttpd/
|
|
|
|
Tag: role::shared-lib
|
|
|
|
Download-Size: 109 kB
|
|
|
|
APT-Sources: http://deb.debian.org/debian bullseye/main amd64 Packages
|
|
|
|
Description: library embedding HTTP server functionality
|
|
|
|
GNU libmicrohttpd is a small C library that is supposed to make it
|
|
|
|
easy to run an HTTP server as part of another application.
|
|
|
|
Key features that distinguish GNU Libmicrohttpd from other
|
|
|
|
projects are:
|
|
|
|
* C library: fast and small
|
|
|
|
* API is simple, expressive and fully reentrant
|
|
|
|
* Implementation is HTTP 1.1 compliant
|
|
|
|
* HTTP server can listen on multiple ports
|
|
|
|
* Four different threading models (select, poll, pthread, thread pool)
|
|
|
|
* Support for IPv6
|
|
|
|
* Support for SHOUTcast
|
|
|
|
* Support for incremental processing of POST data (optional)
|
|
|
|
* Support for basic and digest authentication (optional)
|
|
|
|
* Support for SSL3 and TLS
|
|
|
|
\end{verbatim}
|
|
|
|
|
|
|
|
|
|
|
|
% ==============================================================
|
|
|
|
|