2010-04-12 4 views
5

Je dois pouvoir trouver l'adresse IP du serveur sur lequel la page est en cours d'exécution. J'ai un code qui appelle un site tiers et doit passer une clé spécifique qui change en fonction du serveur sur lequel il est. Existe-t-il une variable CGI ou un moyen quelconque dans ColdFusion pour déterminer quelle est l'adresse IP du serveur hôte?Comment obtenir l'adresse IP de votre serveur d'applications

Répondre

1

Le moyen le plus sûr sera d'utiliser un service comme WhatIsMyIP. Si le serveur est derrière un NAT, le système d'exploitation n'a aucune connaissance de l'adresse IP externe.

Il y a beaucoup de questions dans le SO à ce sujet, voir here par exemple.

4

Il y a deux raisons pour lesquelles un programme ne peut pas interroger l'hôte, il est en cours d'exécution et voir ce que son adresse IP est:

  1. Il peut avoir plusieurs ips, et à court de regarder à travers toutes sortes de données du noyau structures vous ne saurez probablement pas lequel sera utilisé pour une connexion sortante donnée.

  2. Il peut se connecter au monde extérieur via un pare-feu NAT ou une sorte de proxy afin que le monde extérieur voit une adresse IP différente de celles configurées sur votre boîtier.

En fait, il pourrait y avoir plus de ces deux, mais ce sont ceux qui me sont apparus. Pour cette raison, le moyen le plus simple est de se connecter à une autre boîte quelque part en dehors de votre réseau d'entreprise et de voir quelle IP vous pensez avoir. J'utilise un script CGI à deux lignes qui s'exécute sur ma boîte colo pour détecter l'adresse IP de mon serveur domestique (pour que je puisse détecter quand le câblodistributeur le change).

5

Comme les autres commentateurs ont décrit si vous avez besoin l'adresse IP externe que le site tiers, alors vous voit probablement devrait utiliser les approches externes qu'ils recommandent.

Toutefois, si le tiers est de vous donner accès à une forme qui est basée sur une adresse IP réelle que le serveur se voit et non l'adresse IP comme ils le voient, vous pouvez utiliser

<cfset cName = CreateObject("java", "java.net.InetAddress").getLocalHost().getHostAddress()> 

<cfdump var="#cName#"> 
2

Vous pouvez utiliser CGI .LOCAL_ADDR pour déterminer l'adresse IP de votre serveur (CFML équivalent à $ _SERVER ["SERVER_ADDR") de PHP). Il fonctionne sur IIS et Apache en utilisant ColdFusion ou Railo, étant donné que vous n'êtes pas derrière un proxy, ne pas héberger votre IP serveur et n'avoir qu'une seule adresse IP assignée à votre serveur (vous ne savez pas quelle IP sera affichée s'il y en a plusieurs).

0
<cfhttp url="http://www.whatismyip.com/" result="myresult" resolveurl="yes"> 
<cfoutput>#myresult.filecontent#</cfoutput> 
Questions connexes