Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2018-08-31T21:57:22+02:00Les derniers messages parus sur le forum de Zeste de Savoir.Django (zds-site) et Apache2 avec un virtualhost, message #1879272018-08-31T21:57:22+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/11212/django-zds-site-et-apache2-avec-un-virtualhost/?page=1#p187927<figure><blockquote>
<p>Question : pourquoi utiliser un truc lourd comme apache et un truc puissant comme wsgi au lieu d’un truc simple à configurer et léger comme nginx et le serveur de dev de Django ?</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/11212/django-zds-site-et-apache2-avec-un-virtualhost/?page=1#p187895">cepus</a></figcaption></figure>
<p>Au début pour faire un firewall/proxy applicatif, je pensais à utiliser nginx. Mais vu que je suis plus habitué à utiliser un environnement apache2 et que je ne m’attends pas à avoir un trafic qui demande à opti <del>ma connexion</del> ou plutôt mes ressources systèmes, j’ai choisi apache2 pour un gain de temps et ne pas perdre mon temps à lire et comprendre le fonctionnement de nginx (et surtout les mauvaises choses à ne pas faire). Je savais déjà plus où moins à quoi devait ressembler mon fichier virtualhost.</p>
<blockquote>
<p>et un truc puissant comme wsgi</p>
</blockquote>
<p>Je n’ai pas compris ce qu’était un wsgi, c’est ce que j’appelle moi un "firewall/proxy applicatif" ?</p>Django (zds-site) et Apache2 avec un virtualhost, message #1878952018-08-31T17:54:58+02:00cepus/@cepushttps://zestedesavoir.com/forums/sujet/11212/django-zds-site-et-apache2-avec-un-virtualhost/?page=1#p187895<p>Question : pourquoi utiliser un truc lourd comme apache et un truc puissant comme wsgi au lieu d’un truc simple à configurer et léger comme nginx et le serveur de dev de Django ?</p>Django (zds-site) et Apache2 avec un virtualhost, message #1878492018-08-31T12:03:55+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/11212/django-zds-site-et-apache2-avec-un-virtualhost/?page=1#p187849<p>Petit explication au passage :</p>
<p>On utilise le module Rewrite et Headers d’apache.</p>
<p>On utilise Rewrite pour définir une variable d’environnement <kbd>Zds-Real-IP</kbd> contenant l’ip du client car RequestHeader supporte uniquement les variables d’environnements.</p>
<p>Puis RequestHeader s’active seulement si <code>env=Zds-Real-Ip</code> est défini [donc dans tous les cas], on définit HTTP_ZDS_REAL_IP par notre variable d’environnement <kbd>Zds-Real-Ip</kbd> soit notre IP.</p>
<hr>
<p>La condition est inutile mais dans le cas d’un imprévu, il vaut mieux que HTTP_ZDS_REAL_IP ne soit pas déclaré à <em>null</em> pour éviter que le zds-site (django) se mange une erreur python. Ceci revient à l’usage "par défaut" mais on autorise le client à modifier son HEADER et donc la valeur de ZDS_REAL_IP, ce qui ne peut pas arriver car l’URL rewrite s’active à tous les coups.</p>Django (zds-site) et Apache2 avec un virtualhost, message #1878442018-08-31T11:30:06+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/11212/django-zds-site-et-apache2-avec-un-virtualhost/?page=1#p187844<p>J’ai vaincu ! :B</p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span></div><pre><code class="hljs language-apache"> <span class="hljs-attribute"><span class="hljs-nomarkup">RewriteEngine</span></span> <span class="hljs-literal">On</span>
<span class="hljs-attribute"><span class="hljs-nomarkup">RewriteRule</span></span> .* -<span class="hljs-meta"> [E=Zds-Real-Ip:%{REMOTE_ADDR}]</span>
<span class="hljs-attribute">RequestHeader</span> Set X-Real-Ip <span class="hljs-variable">%{Zds-Real-Ip}</span>e env=Zds-Real-Ip
</code></pre></div>Django (zds-site) et Apache2 avec un virtualhost, message #1878142018-08-31T03:01:34+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/11212/django-zds-site-et-apache2-avec-un-virtualhost/?page=1#p187814<p>Ce n’est pas bon car RemoteIPHeader prend la valeur d’entrée et non la variable de sortie. Je fouille actuellement du côté de SetEnv.</p>
<p>J’ai tenté plein d’autres choses et rien. <img src="/static/smileys/triste.png" alt=":(" class="smiley"> rpf, modheader,setenv… Quelqu’un a une autre solution ?</p>Django (zds-site) et Apache2 avec un virtualhost, message #1874262018-08-28T09:58:04+02:00Sandhose/@Sandhosehttps://zestedesavoir.com/forums/sujet/11212/django-zds-site-et-apache2-avec-un-virtualhost/?page=1#p187426<p>En prod on utilise le header <code>X-Real-IP</code>, cf. le code ici:
<a href="https://github.com/zestedesavoir/zds-site/blob/4ee284feae9aed24118312291954ff5402a53c59/zds/member/views.py#L1192-L1193">https://github.com/zestedesavoir/zds-site/blob/4ee284feae9aed24118312291954ff5402a53c59/zds/member/views.py#L1192-L1193</a></p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-diff"><span class="hljs-comment">--- a 2018-08-28 09:57:31.000000000 +0200</span>
<span class="hljs-comment">+++ b 2018-08-28 09:57:21.000000000 +0200</span>
<span class="hljs-meta">@@ -1,11 +1,11 @@</span>
<VirtualHost *:80>
ServerName vps.a312.fr
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://vps.a312.fr/
<span class="hljs-deletion">- RemoteIPHeader X-Forwarded-For</span>
<span class="hljs-addition">+ RemoteIPHeader X-Real-IP</span>
ErrorLog ${APACHE_LOG_DIR}/zdsenv_error.log
CustomLog ${APACHE_LOG_DIR}/zdsenv_access.log combined
</VirtualHost>
</code></pre></div>Django (zds-site) et Apache2 avec un virtualhost, message #1874192018-08-28T02:29:15+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/11212/django-zds-site-et-apache2-avec-un-virtualhost/?page=1#p187419<p>Bonjour,</p>
<p>J’utilise Apache2 comme firewall applicatif pour Django cependant tous les utilisateurs on la REMOTE_ADDR égale à 127.0.0.1, ce qui ne me convient pas.</p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-apache"><span class="hljs-section"><VirtualHost *:80></span>
<span class="hljs-attribute"><span class="hljs-nomarkup">ServerName</span></span> vps.a312.fr
<span class="hljs-attribute">ProxyPass</span> / http://localhost:8080/
<span class="hljs-attribute">ProxyPassReverse</span> / http://vps.a312.fr/
<span class="hljs-attribute">RemoteIPHeader</span> X-Forwarded-For
<span class="hljs-attribute">ErrorLog</span> <span class="hljs-variable">${APACHE_LOG_DIR}</span>/zdsenv_error.log
<span class="hljs-attribute">CustomLog</span> <span class="hljs-variable">${APACHE_LOG_DIR}</span>/zdsenv_access.log combined
<span class="hljs-section"></VirtualHost></span>
</code></pre></div>
<p>J’ai ajouté : <a href="https://httpd.apache.org/docs/trunk/fr/mod/mod_remoteip.html"><code>RemoteIPHeader X-Forwarded-For</code></a> mais l’ip ne change pas quand je regarde dans les debugs du zds, c’est-à-dire le volet à droite :</p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-text">En-têtes de requête
X-Forwarded-For 45.x.x.x
Environnement WSGI
REMOTE_ADDR 127.0.0.1
</code></pre></div>
<p>J’ai relancé apache et activé mod_remoteip mais aucun changement. Avez-vous une piste ?</p>
<p>Bon vol,</p>
<p>A-312.</p>