Paylaşılan bir sunucudaki bir web sitesine IP adresine göre nasıl gidebilirim?


18

Birkaç sorum var, lütfen yardım edin:

İlk olarak, Google aramasına sadece yazarak erişebilirim http://74.125.224.211, çünkü bu nslookup tarafından döndürülen IP adresidir.

Ancak, www.yahoo.com döndürülen IP adresleri ile bunu yapamadı. Yahoo arama sayfasına IP adresinden nasıl gidebilirim?

Başka bir örnek, DNS sunucusu tarafından http://www.allaboutcircuits.comçözülecek 68.233.243.63, ancak gidersem http://68.233.243.63"Merhaba dünya!"

İkincisi, nedense, benim web barındırma hizmeti ile DNS çözümleyicileri ile yanlış bir şey var (düzeltilmeyecek !!) . Yani komutlar

get_file_contents("http://www.allaboutcircuits.com");

geri dönücek php_network_getaddresses: getaddrinfo failed: Name or service not known

IP adresi ile bu sorunu nasıl çözebilirim?

68.233.243.63

Yani, bir şekilde HTTP ana bilgisayar adı parametresini get_file_contents()?

Bunu kendi tarafımda (kodumda) çözmek istiyorum, sunucu yöneticisi tarafından sorun giderme / ayarlama yapılmayacak.


9
Sanal sunucular ve tek bir ana bilgisayarın birçok web sitesini nasıl barındırabileceği hakkında bilgi edinin .
wallyk

Sadece alan adını kullanamamanızın bir nedeni olduğunu varsayalım?
Isaac Rabinovitch

@Isaac Rabinovitch: user1502776 "web barındırma hizmetimde DNS çözücülerle ilgili bir sorun var (düzeltilmeyecek !!)" ve "Bunu kendi tarafımda (kodumda) çözmek istiyorum, sorun giderme yok / düzenleme sunucu yöneticisi tarafından yapılacaktır. "
Bavi_H

3
Sunucu yöneticiniz bu kadar aptalsa, farklı bir web barındırma sağlayıcısı bulmanız gerekir.
Michael Hampton

Yanıtlar:



10

Wallyk'in dediği gibi, sanal sunucular

Apache için bu örneği ele alalım

<VirtualHost *:80>
ServerName example2.com
DocumentRoot C:/www/example2.com
</VirtualHost>

<VirtualHost *:80>
ServerName example.com
DocumentRoot C:/www/example.com
</VirtualHost>

C: \ www \ example.com içinde "Merhaba Dünya! Example.com" yazan bir dizin dosyası oluşturun.

c: \ www \ example2.com adresinde "Hellow World! example2.com" yazan bir dizin dosyası oluşturun

Ve hosts dosyanızı şu şekilde değiştirin:

127.0.0.1 example.com
127.0.0.1 example2.com

Sonra gidip http://example.com sonra gidin http://example2.com

Böylece tek bir ip başına birden çok siteye sahip olabilirsiniz

Yani temelde cevap, hayır o siteyi ip üzerinden alamazsınız.


Sadece IP olan nokta yeterli değil anladım. Ancak, uzak web sayfalarını getirmek için sağladığım IP ve ana bilgisayar adını kullanan herhangi bir PHP komutu var mı? Komut DNS'yi sorgulamamalıdır.
user1502776 15:12

4
Bu teknik olarak doğru olsa da, soruyu ele almaz. Soru, bilinen bir ana bilgisayar adına sahip belirli bir sitenin , IP adresini bir PHP komut dosyası kullanarak DNS üzerinden otomatik olarak çözmeden, bilinen bir IP'ye sahip bir sunucudan nasıl isteneceğini sormaktır. Belirli bir IP'ye karşılık gelen bir ana bilgisayar adının nasıl bulunacağını sormaz. wallyk'in yorumu daha önemlidir, çünkü bağlantısı Hostbir sunucunun barındırdığı web sitelerini ayırt etmesi ve doğru olanı sunması için gerekli başlık hakkında bilgi içerir .
Bob

5

Kontrolünüz dışındaki bir DNS sunucusuna güvenmek yerine, hem ana bilgisayar adını hem de IP adresini manuel olarak belirtmek istediğinizi söylüyorsunuz. File_get_contents dokümantasyonundaki yorumlara baktığımda, yorum sahiplerinin gerekli Host: başlığını içeren bir bağlam oluşturarak benzer sorunları çözdüğünü görüyorum. Bunun gibi bir şey:

$context = stream_context_create(array('http' => array('header' => 'Host: www.allaboutcircuits.com')));
$data = file_get_contents('http://68.233.243.63/', 0, $context);

Elbette, hem ana bilgisayar adını hem de IP adresini manuel olarak belirtmenin dezavantajının, IP adresi gelecekte değişmesi durumunda (örneğin, site yeni bir barındırma sağlayıcısına taşınırsa), kodunuzun IP adresini manuel olarak güncellersiniz.


2

IP adresi tek başına, aynı bağlantı noktasında / sunucuda birden fazla sanal ana bilgisayar çalışırken hangi siteye gitmek istediğinizi benzersiz bir şekilde tanımlamak için yeterli değildir. Bu durumda, HTTP isteğinde sunucu adını tanımlayan Ana Bilgisayar üstbilgisini belirtmeniz gerekir. Bunu doğrudan telnet üzerinden 80 numaralı bağlantı noktasına yapabilirsiniz:

$ telnet 68.233.243.63 80
Trying 68.233.243.63...
Connected to 68.233.243.63.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.allaboutcircuits.com

telnet komutunu, GET ve Host satırlarını yazıp sunucudan döndürülen HTML kaynak kodunu alın.

Ya da özellikle üstbilgiyi ( -Hbayrakla birlikte) eklediğiniz yerde curl kullanabilirsiniz .

curl 68.233.243.63 -H "Host: www.allaboutcircuits.com"

1

İkinci olarak, herhangi bir nedenle, web hosting hizmeti ile DNS çözümleyicileri ile ilgili bir sorun var (düzeltilmeyecek !!)

Web barındırıcısı değilse 8.8.8.8 ve 8.8.8.6 Google tarafından çalıştırılıyorsa ve 4.4.4.2 ortak bir bekleme durumundaysa, istemci tarafında başka bir DNS sunucusu kullanabilirsiniz. Namebench en hızlısı bulmana izin verecek. Alternatif olarak, bir çeşit proxy hizmeti kullanabilirsiniz (VPS'de kendim çalıştırıyorum veya Tor kullanıyorum, ancak başka seçenekler de var).

Bu PHP olduğu için, kodu başka bir sistemde çalıştırmak daha da kolay bir seçenek olacaktır. Kludges bakımı yapılamaz.


bazı paylaşılan ana bilgisayardaymış gibi geliyor ve DNS'yi değiştiremiyor, bu yüzden uyarısı var "Bunu kendi tarafımda (kodumda) çözmek istiyorum, sunucu yöneticisi tarafından hiçbir sorun giderme / ayar yapılmayacak. " DNS'yi değiştirebileceğini sanmıyorum. . .
ernie

1
Test etmek için istemci tarafında alternatif bir dns sunucusu kullanabilir. Web barındırıcısı vhost'ları düzgün kurmuyorsa, başka bir web barındırıcısına ihtiyacı var.
Journeyman Geek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.