Comment puis-je obtenir l'IP de l'utilisateur alors que les deux CloudFlare et MaxMind de GeoIP avec mod_geoip?
CloudFlare fournit le pays de l'utilisateur de l'IP d'origine, mais j'ai besoin de l'emplacement sur un niveau de la ville, donc j'ai ajouté MaxMind de GeoCityLite à l'aide de la mod_geoip Apache script.
Le problème est maintenant d'obtenir l'IP dans une variable php, je suis en utilisant quelque chose comme
$country = apache_note("GEOIP_COUNTRY_CODE");
Ce qui est excellent, mais l'adresse IP mod_geoip, c'est le DNS de CloudFlare, pas l'utilisateur final. CloudFlare propose la variable serveur HTTP_CF_CONNECTING_IP utiliser le bout-IP de l'utilisateur, mais comment puis-je utiliser CETTE variable/IP dans la mod_geoip?
Cela peut être fait avec quelques lignes dans le htaccess?
Edit: j'ai une solution de contournement à l'aide de l'API php pour geoip qui est facile, mais les critères de référence à l'aide de l'apache de recherche de l'api php est beaucoup mieux, donc, je préfère trouver cette solution.
OriginalL'auteur hellodolly | 2011-06-24
Vous devez vous connecter pour publier un commentaire.
le faire avant d'appeler geoip:
Travaillé parfaite, j'étais en tirant mes cheveux à essayer de comprendre pourquoi l'utilisateur n'étaient pas en mesure de se connecter après la mise en place de cloudflare. merci!
OriginalL'auteur Eun
J'avais de la difficulté à essayer d'obtenir à la fois la Larvel TrustedProxy travailler avec les deux CloudFlare et d'AWS EC2 Elastic Load Balancer ensemble. Il suppose que vous utilisez seulement 1 proxy, pas 2 et ne fonctionne pas bien. J'ai fini juste sauter la confiance proxy des choses tous ensemble et de faire une simple MiddleWare que si l'utilisation de CloudFlare, peu importe si vous avez un autre programme d'Équilibrage de Charge en face de lui, il va tout simplement mis la bonne adresse IP et le protocole.
CloudFlare transmet des informations sur le client par le biais des en-têtes HTTP: https://support.cloudflare.com/hc/en-us/articles/200170986-How-does-CloudFlare-handle-HTTP-Request-headers-
Nous sommes en tenant à la fois l'IP du client et le client HTTP/HTTPS, protocole et en le définissant dans l' $request->serveur attributs.
======
app/Http/Middleware/UseCloudFlareHeaders.php
app/Http/Kernal.php
Si quelqu'un connaît une meilleure façon de faire cela, s'il vous plaît laissez-nous savoir.
OriginalL'auteur Random5000
Cloudflare a une extension d'Apache mod_cloudflare (https://github.com/cloudflare/CloudFlare-Tools) qui, je crois, remplace l'IP Cloudflare avec la bonne.
Si il est chargé avant mod_geoip il peut travailler en fonction de la façon dont mod_geoip œuvres.
Vous aurez besoin d'un accès root pour installer mod_cloudflare.
OriginalL'auteur Sam
Pour obtenir une adresse IP de l'utilisateur stocké dans une variable comme
$ip
, vous pouvez le faire de deux façons:ou
OriginalL'auteur Cyclone