TetaTricks/chap/webserver.tex
2024-09-28 20:25:02 +02:00

81 lines
2.7 KiB
TeX

%
% Chapitre un peu en vrac :)
%
\chapter{Web servers}
% ==============================================================
\section{Apache, Nginx} \index{Apache} \index{nginx}
Apache (\textsl{A patchy server}) et Nginx sont de grands classiques,
voire même, dans le cas d'Apache, un grand ancien.
Que nous ne verrons pas pour le moment. Je vais plutôt me concentrer
sur un autre serveur : \texttt{lighthttp}, pour passer ensuite à quelque
chose d'encore plus bas-niveau qui demandera quelques connaissances en C.
% ==============================================================
\section{Lighttpd} \index{Lighttpd}
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.
\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}
\textbf{Q:} Sur une installation fraiche, la racine du site est
en erreur 403\index{403} ?
\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à.
Question : comment forcer le \texttt{Content-Type} pour un type particulier
de fichier ? Par exemple text/plain pour les fichiers \texttt{.POV} ?
% ------------------------------------------------
\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 = ("") \}}
% ==============================================================
\section{Custom made}
\begin{verbatim}
tth@ramen:~/Houba/Fractales90$ apt show libmicrohttpd12
Package: libmicrohttpd12
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.
\end{verbatim}
\lstinputlisting[language=C]{code/inet/plopserver.c}
% ==============================================================
\section{Mais encore ?}
Il doit bien exister des modules Perl pour faire facilement
un serveur web, non ?
Même qu'on pourrait en écrire un rien qu'avec les sockets.
% ==============================================================