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
|
|
|
|
2024-09-29 05:25:02 +11:00
|
|
|
Apache (\textsl{A patchy server}) et Nginx sont de grands classiques,
|
2022-06-24 12:19:32 +11:00
|
|
|
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
|
|
|
|
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}
|
|
|
|
|
2024-09-29 05:25:02 +11:00
|
|
|
\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.
|
|
|
|
|
2022-01-30 08:46:41 +11:00
|
|
|
|
|
|
|
% ==============================================================
|
|
|
|
|