Phpbb - Nginx - Localhost

Forum de support pour les questions concernant l'utilisation de phpBB 3.3, les problèmes rencontrés lors de manipulations, de configuration du forum ou de personnalisation autres que les Styles ou les Extensions

Modérateur : Équipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com

Pensez à effectuer une recherche, la réponse à votre question a de grandes chances d'avoir déjà été donnée.
pecolard
Posteur néophyte
Posteur néophyte
Messages : 8
Enregistré le : 22 févr. 2021 à 23:05

Phpbb - Nginx - Localhost

Message par pecolard »

Bonjour

Je poste ici sur le conseil de Jester.
Nous hébergeons un phpbb 3.3.3, sur un serveur NGINX, php 7.4, maria db 10.3


A l'heure où j'écris, je ne sais pas si la configuration dédiée NGINX est bien installée sur le serveur. D'ailleurs, cette configuration est-elle indispensable ou plutôt correspond-t-elle à une solution pour notre problème ?

Voici les faits qui nous posent problème :
Depuis le passage à NGINX, nous constatons que les IP affichées sur le PCA sont toutes en 127.0.0.1. Avant, nous avions les IP réelles.
En regardant la bdd, la table user indique les ip réelles des utilisateurs.

Je fais un test ce matin en entrant un message sur le forum.
Dans la table user, le champ user_lastpost_time est bien mis à jour, mais les champs user_ip`, `user_lastvisit` ne sont pas mis à jour.
Le PCA indique toujours l'adresse localhost.

Nous aimerions votre aide pour identifier le problème.
- Les champs user_ip`, `user_lastvisit`sont-ils censés se mettre à jour à chaque visite (normalement, j'imagine que oui ?)
- Le PCA prend-il sa source d'ip depuis la bdd ou depuis une donnée intermédiaire et postérieure ou antérieure à l'inscription dans la bdd ?

Merci.
Avatar du membre
Steph
Administrateur
Administrateur
Messages : 21340
Enregistré le : 29 déc. 2008 à 15:48
Localisation : Alsace / Bas-Rhin / France
Contact :

Re: Phpbb - Nginx - Localhost

Message par Steph »

Salut,
pecolard a écrit :Depuis le passage à NGINX, nous constatons que les IP affichées sur le PCA sont toutes en 127.0.0.1. Avant, nous avions les IP réelles.
Je ne connais pas NGINX, mais voilà un message qui peut surement au moins donner une piste : http://forums.phpbb-fr.com/support-util ... l#p1656827

Une autre piste ici : https://www.phpbb.com/community/viewtopic.php?t=2379931
pecolard a écrit :En regardant la bdd, la table user indique les ip réelles des utilisateurs.
C’est-à-dire ? Pour les nouveaux enregistrés ou seulement pour les anciens ?
pecolard a écrit :Dans la table user, le champ user_lastpost_time est bien mis à jour, mais les champs user_ip`, `user_lastvisit` ne sont pas mis à jour.
Ce qu’il serait bien de savoir, c’est si le champ n’est effectivement pas mis à jour ou si l’information est enregistrée avec 127.0.0.1, car ce n’est pas forcément pareil.
Skouat
Resp. Traducteurs
Resp. Traducteurs
Messages : 15959
Enregistré le : 02 avr. 2008 à 20:47
Contact :

Re: Phpbb - Nginx - Localhost

Message par Skouat »

Hello,

Juste au cas où que vous ne l'auriez pas vu, phpBB fourni un modèle de configuration pour Nginx

https://github.com/phpbb/phpbb/blob/3.3 ... ample.conf
pecolard
Posteur néophyte
Posteur néophyte
Messages : 8
Enregistré le : 22 févr. 2021 à 23:05

Re: Phpbb - Nginx - Localhost

Message par pecolard »

Bonjour

Oui, le modèle, on vient de le voir, donc on va voir avec la DSI pour le mettre en place.
Cependant, ça n'explique pas tout.

Les adresses réelles semblent bien enregistrées pour tous les utilisateurs qui se connectent.
Je me connecte sur le forum avec mon compte perso
En faisant cette requête directement en bdd
SELECT `username`,`user_ip`, `user_lastvisit`, `user_lastpost_time` FROM `phpbb3_users` ORDER BY `user_lastvisit` DESC
je vois, d'après le timestamp, que ma dernière connexion (lastvisit) remonte à lundi midi 12h36. Bon, on est le 24/02, trois jours plus tard.
Pourtant, la requête sql me donne bien des utilisateurs qui se sont connectés aujourd'hui, mais je pense pas tous.

Donc pas de problème de cache à priori, car sinon toutes les entrées remonteraient à il y a trois jours.
Et dans cette requête, j'ai bien toutes les adresses IP normales des dernières personnes qui se sont connectées, pas du localhost.


Si j'ai bien pigé, le schéma de connexion est le suivant :
Mon pc -> Frontal load balancer (NGINX) -> Serveur phpbb.
Il y a la variable x-forwarded-for de php qui donne en premier mon adresse IP, puis celle du proxy pour accéder au serveur php.

Je viens de faire un script en php, que j'ai uploadé sur mon serveur.
<?php

$headers = apache_request_headers();
$real_client_ip = $headers["X-Forwarded-For"];
echo $real_client_ip;
?>

Voici le résultat :
84.17.43.146, 127.0.0.1


Ce script affiche bien mon ip réelle, suivie de 127.0.0.1

La bdd prendrait le premier champ, le reste la seconde ? Pas logique, mais je vois pas où chercher une autre réponse.

++
Skouat
Resp. Traducteurs
Resp. Traducteurs
Messages : 15959
Enregistré le : 02 avr. 2008 à 20:47
Contact :

Re: Phpbb - Nginx - Localhost

Message par Skouat »

Hello,
Mon pc -> Frontal load balancer (NGINX) -> Serveur phpbb.
J'ai du mal à me représenter l'infra en place.
Vous évoquez un Load Balancer sous NGINX et un serveur phpBB.
Donc il y a deux machines différentes ?
pecolard
Posteur néophyte
Posteur néophyte
Messages : 8
Enregistré le : 22 févr. 2021 à 23:05

Re: Phpbb - Nginx - Localhost

Message par pecolard »

Oui, c'est bien ça. Le frontal réparti les requêtes qui arrivent vers les serveurs qui gèrent les bdd.
Donc le frontal chope la requête que j'envoie vers phpbb, avec ma vraie ip, puis redirige la requête (c'est un proxy) vers le serveur qui héberge (entre autre) phpbb. A chaque fois que la requête passe par un serveur proxy, il ajoute l'adresse de ce proxy.
Donc ici il ajoute 127.0.0.1.
https://tools.ietf.org/html/rfc7239#section-5.2

Les IP récupérées par phpbb sont donc multivaluées lorsqu'elles passent par un load balancer comme nginx.
Skouat
Resp. Traducteurs
Resp. Traducteurs
Messages : 15959
Enregistré le : 02 avr. 2008 à 20:47
Contact :

Re: Phpbb - Nginx - Localhost

Message par Skouat »

Dans ce cas, avez-vous la possibilité de ne pas passer par le LB, en modifiant le fichier host de votre ordi afin que le nom d'hôte pointe directement sur l'IP de phpBB ?
Si cela est possible, alors vous pourrez voir si le problème est bien au niveau de phpBB ou du LB
pecolard
Posteur néophyte
Posteur néophyte
Messages : 8
Enregistré le : 22 févr. 2021 à 23:05

Re: Phpbb - Nginx - Localhost

Message par pecolard »

ok, je vois l'idée, mais le problème c'est que ce ne sont pas deux serveurs indépendants.
Je ne peux pas atteindre le serveur qui gère phpbb sans passer par le frontal.

le LB est la seule porte d'entrée, le reste est un peu comme un réseau à la maison. On ne peut pas aller directement sur le pc derrière la box sans passer par la box.

il serait plus simple de confirmer que le code du PCA et le code qui vérifie l'ouverture de session prennent bien en compte les adresses ip avec x_forwarded_for.
Si ce n'est pas le cas, on a notre réponse. Si c'est le cas et que le code est juste, alors je dois chercher ailleurs.
Avatar du membre
Sylveretour
Maître des floodeurs
Maître des floodeurs
Messages : 2130
Enregistré le : 21 nov. 2017 à 18:24
Localisation : West Coast
Contact :

Re: Phpbb - Nginx - Localhost

Message par Sylveretour »

Bonjour,
En regardant la bdd, la table user indique les ip réelles des utilisateurs.
Ce n'est pas dans cette table qu'il faut regarder les nouvelles ips, mais dans la table sessions.
pecolard
Posteur néophyte
Posteur néophyte
Messages : 8
Enregistré le : 22 févr. 2021 à 23:05

Re: Phpbb - Nginx - Localhost

Message par pecolard »

ah bah oui tiens, j'aurais pu y penser tout seul. Merci
Donc dans session, l'ip est en 127.0.0.1. Toutes les ip, de tout le monde.
Skouat
Resp. Traducteurs
Resp. Traducteurs
Messages : 15959
Enregistré le : 02 avr. 2008 à 20:47
Contact :

Re: Phpbb - Nginx - Localhost

Message par Skouat »

Depuis le PCA de phpBB dans Général > Information PHP
La valeur de REMOTE_ADDR est également à 127.0.0.1 ?

Si pas déjà testé : https://docs.nginx.com/nginx/admin-guid ... -protocol/
pecolard
Posteur néophyte
Posteur néophyte
Messages : 8
Enregistré le : 22 févr. 2021 à 23:05

Re: Phpbb - Nginx - Localhost

Message par pecolard »

dans le PCA, j'ai pas de remote_addr.
J'ai bien ce champ sous mon apache en local, mais pas sous nginx.

Pour ce qui est du paramétrage NGINX, les sites comme joomla ou wordpress renvoient tous les bonnes ip. Je pense que le paramétrage au niveau global (NGINX) est donc ok à ce niveau là.
Il reste encore à voir la question du fichier de configuration propre à phpbb, mais il me semble qu'à ce niveau, rien n'est relatif à l'adresse IP du visiteur, non ?
Avatar du membre
Sylveretour
Maître des floodeurs
Maître des floodeurs
Messages : 2130
Enregistré le : 21 nov. 2017 à 18:24
Localisation : West Coast
Contact :

Re: Phpbb - Nginx - Localhost

Message par Sylveretour »

Voici la source de l'ip par défaut 127.0.1.1 -> fichier phpbb/session.php dans la fonction session_begin()

Code : Tout sélectionner

		// Why no forwarded_for et al? Well, too easily spoofed. With the results of my recent requests
		// it's pretty clear that in the majority of cases you'll at least be left with a proxy/cache ip.
		$ip = htmlspecialchars_decode($request->server('REMOTE_ADDR'));
....

Code : Tout sélectionner

		// Default IP if REMOTE_ADDR is invalid
		$this->ip = '127.0.0.1';
pecolard
Posteur néophyte
Posteur néophyte
Messages : 8
Enregistré le : 22 févr. 2021 à 23:05

Re: Phpbb - Nginx - Localhost

Message par pecolard »

Ouais, j'avais vu ce code là.
J'ai aussi trouvé ce ticket là :
https://tracker.phpbb.com/browse/PHPBB3 ... te_addr%22

Est-ce que cela veut dire que phpbb ne prend l'ip que de Remote_addr ? Donc à travers le header c'est mort ?
Merci.
Avatar du membre
Sylveretour
Maître des floodeurs
Maître des floodeurs
Messages : 2130
Enregistré le : 21 nov. 2017 à 18:24
Localisation : West Coast
Contact :

Re: Phpbb - Nginx - Localhost

Message par Sylveretour »

Tu peut alors t’atteler si tu le souhaite dans la création d'une petite extension qui remplacerai l'ip par celle prise par NGINX en l'injectant dans l'event core.session_ip_after, voir ceci :

Code : Tout sélectionner

		/**
		* Event to alter user IP address
		*
		* @event core.session_ip_after
		* @var	string	ip	REMOTE_ADDR
		* @since 3.1.10-RC1
		*/
		$vars = array('ip');
		extract($phpbb_dispatcher->trigger_event('core.session_ip_after', compact($vars)));
Répondre

Retourner vers « Utilisation »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité