Как получить IP-адрес вашего сервера приложений - PullRequest
5 голосов
/ 12 апреля 2010

Мне нужно найти IP-адрес сервера, на котором в данный момент выполняется страница. У меня есть код, который вызывает сторонний сайт и должен передать определенный ключ, который меняется в зависимости от того, на каком сервере он работает. Есть ли в ColdFusion переменная CGI или какой-либо другой способ определения IP-адреса хост-сервера?

Ответы [ 6 ]

5 голосов
/ 13 апреля 2010

Как и в других комментариях, если вам нужен внешний IP-адрес, поскольку сторонний сайт видит его, то вам, вероятно, следует использовать внешние подходы, которые они рекомендуют.

Однако, если третья сторона предоставляет вам доступ в какой-либо форме, основанной на фактическом IP-адресе, поскольку сервер видит себя, а не IP-адрес, который он видит, вы можете использовать

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

 <cfdump var="#cName#">
4 голосов
/ 12 апреля 2010

Есть две причины, по которым программа не может запросить хост, на котором работает, и посмотреть, какой у нее IP:

  1. У него может быть несколько ips, и если вы не просматриваете все виды структур данных ядра, вы вряд ли будете знать, какая из них будет использоваться для данного исходящего соединения.

  2. Он может подключаться к внешнему миру через брандмауэр NAT или какой-либо прокси-сервер, так что внешний мир увидит IP-адрес, отличный от любого из настроенных на вашем устройстве.

На самом деле, может быть, больше, чем эти два, но это те, которые произошли со мной.

Из-за этого самый простой способ - подключиться к другому устройству за пределами вашей корпоративной сети и посмотреть, какой IP-адрес, по вашему мнению, у вас есть. Я использую двухстрочный сценарий CGI, запущенный на моем устройстве colo, чтобы определить, какой IP-адрес у моего домашнего сервера в настоящее время (поэтому я могу определить, когда кабельная компания меняет его).

2 голосов
/ 13 апреля 2010

Вы можете использовать CGI.LOCAL_ADDR, чтобы определить IP-адрес вашего сервера (CFML эквивалентно PHP $ _SERVER ["SERVER_ADDR"]). Он работает на IIS и Apache с использованием ColdFusion или Railo, если вы не находитесь за прокси-сервером, не присваиваете IP-адрес вашего сервера и вам назначен только один IP-адрес (не уверен, какой IP-адрес будет показан, если их несколько).

2 голосов
/ 12 апреля 2010

Я бы использовал hostip.info API
Ваш IP в XML: http://api.hostip.info/get_xml.php
Ваш IP в HTML: http://api.hostip.info/get_html.php

1 голос
/ 12 апреля 2010

Самый безопасный способ - использовать службу типа WhatIsMyIP . Если сервер находится за NAT, то ОС не знает о внешнем IP-адресе.

В SO много вопросов по этому поводу, см. здесь , например.

0 голосов
/ 11 декабря 2013
<cfhttp url="http://www.whatismyip.com/" result="myresult" resolveurl="yes">
<cfoutput>#myresult.filecontent#</cfoutput>
...