Karşılık gelen alan adı yerine IP adresi yazmak neden web sitesini göstermiyor? [kapalı]


38
> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946

Chrome 93.184.216.34yerine yazıyorum http://example.com. Web sitesini yüklemiyor. Neden?


Kural olarak, gerçek bir sunucuyu yapılandırmadıkça insanlar asla IP adreslerini kullanmamalıdır.
David Richerby

Worth vurgulayan yaptığını 404 HTTP yanıtı: sunucudan bir yanıt almak. Bu, ana bilgisayarı (diğer taraftaki bilgisayarı) ve bazı web sunucularını (Linux'ta çalışan bir açık kaynak, Nginx gibi çalışan bir sunucuda) bulduğu anlamına gelir.
jpmc26

Yanıtlar:


107

Çünkü uygun HTTP Hostbaşlığı genellikle amaçlanan siteyi elde etmek için sıklıkla gereklidir.

Aynı IP adresinde birden fazla web sitesi barındırmak ve bunları Hostistemcinin belirttiği HTTP başlığına (ve HTTPS durumunda bugünlerde TLS SNI değerine dayanarak) göre ayırmak oldukça yaygındır .

Yani, http://example.comtarayıcınıza girdiğinizde Hostbaşlık vardı example.com, ancak girdiğiniz zaman durum böyle değildi 93.184.216.34. Her iki durumda da aynı web sunucusuna ulaşıyorsunuz, ancak farklı yanıtlar alıyorsunuz (bu özel durumda 200'e karşı 404).


4
Birisi ne için Hostve hangi web sunucularının genellikle ne için kullandığı hakkında biraz genişleyebilir mi? Çevrimiçi arama yapmak biraz zor, çünkü bu kelime aşırı yüklenmiş.
user1717828

1
tools.ietf.org/html/rfc7230#section-5.4 Bir http sunucusu istediği şekilde bir Host başlığını işler. Örneğin httpd, VirtualHost yapılandırma direktiflerine sahiptir.
John Mahowald

19
@SergiyKolodyazhnyy Tabii. Yapabilirsin curl -H "Host: example.com" http://93.184.216.34/ya da onun gibi bir şey.
Håkan Lindqvist

13
Parola cümlesiyle - "Web siteleri için URL'ler ve IP adresleri arasında bire bir ilişki yoktur."
Pete,

1
Aslında, belirli bir sunucunun (93.184.216.34 2606: 2800: 220: 1: 248: 1893: 25c8: 1946), en azından example.com example.net example.org example.edu aynı adres (ler) üzerinde işlem yapması, bu yüzden Host başlığında gerçekten ismine ihtiyaç duyuyor.
dave_thompson_085

14

Çünkü genellikle web sunucuları "sanal sunucu" teknolojisini kullanır ve HTTP isteğinize tam olarak istediğiniz alan adı içinde cevap verebilir, ancak web sunucularının IP adresi değil. Bir IP adresinde birden fazla alan adı sakladığınız için teşekkürler.

Örneğin, Apache web sunucusu aşağıdakileri kullanarak bir IP adresi ile HTTP isteğinize cevap verebilir:

<VirtualHost *:80>
ServerName Default
...
</VirtualHost>

veya Yapılandırmada hiç VirtualHost kullanılmadıysa.

Apache'deki VirtualHost özelliği 1996 yılında tanıtıldı.


10

In Apache , sadece tek bir IP adresi kullanarak pek çok web sitesi barındırabilir. Buna sanal barındırma denir. Tek tek etki alanları bile alt etki alanlarının nasıl oluşturulabildiğini gösterir. Bu, her etki alanı / alt etki alanı için VirtualHost yönergelerini içeren bir Apache yapılandırma dosyası ayarlayarak yapılır.

İki sanal ana bilgisayara sahip bir örnek HTTP sunucusu, example1.com ve example2.com şuna benzeyebilir (IP adresi tanımı):

<VirtualHost 93.184.216.34:80>
  ServerName example1.com
  ServerAlias www.example1.com
  DocumentRoot /var/www/example1.com
</VirtualHost>

<VirtualHost 93.184.216.34:80>
  ServerName example2.com
  ServerAlias www.example2.com
  DocumentRoot /var/www/example2.com
</VirtualHost>

Aynı zamanda şuna benzeyebilir (isme dayalı tanım):

<VirtualHost *:80>
  ServerName example1.com
  ServerAlias www.example1.com
  DocumentRoot /var/www/example1.com
</VirtualHost>

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

Her iki durumda da, iki sanal ana bilgisayar kaydı dahili olarak bellekte oluşturulur ve bir URI isteği geldiğinde karşılaştırmak için Apache tarafından kullanılır.

Bir kullanıcı IP adresini bir kullanıcı aracısı aracılığıyla yazdığında, yapılandırma dosyasında listelenen ilk sanal ana bilgisayar birincil etki alanı olarak kullanılır (örn. Bu durumda example1.com).

Bir kullanıcı bir etki alanı adı girdiğinde, istek, kendisiyle ilişkilendirilmiş IP adresini sağlayan ortak bir İnternet DNS ağına (ICANN) gönderilir. Her ikisini de bir ICANN kayıt şirketi aracılığıyla kaydettiniz (GoDaddy gibi). Bunların her ikisinin de doğru olması ve yayının ICANN ağındaki tüm DNS sunucularına yayılması için biraz zaman vermeniz gerekir. Bu günlerde 24 saate kadar sürebilir.

İstek Apache HTTP sunucunuza yönlendirildiğinde, IP adresi ve etki alanı adı dahili VirtualHost kayıtlarının listesiyle eşleştirilir. Bir tane bulunduğunda, belge kökü, kullanıcı aracısına geri dönmek üzere nesne kaynağına giden tam dosya sistemi yolunu oluşturmak için kullanılır. Değilse, bir HTTP 404, kendisiyle ilişkili herhangi bir hata belgesiyle birlikte gönderilir.


8

"Ev" terminolojisini kullanmayı seviyorum.

Kolayca üzerinde bir isim yazmadan bir eve bir mektup gönderebilirsiniz.

Kişinin adını girerseniz, istenen alıcıya gönderirsiniz.

Hedef aynıdır ancak eve ulaştığında nasıl ele alındığı farklıdır.

Siteyi belirlediğinizde, örneğin www.example.com, ardından sunucu, isteğin nasıl işleneceğini ve hangi ana bilgisayara yönelik olduğunu ve hangi siteye hizmet sunacağını bilir.


Bu yararlı bir metafor!
Redwolf Programları

+1 Alıcı adı fikrini seviyorum. Benzer bir benzetme düşünüyordum ama fiziksel binayı (bilgisayarı) tanımlayan IP Adresiyle, çok kiracılı binalardaki asıl alıcıyı tanımlayan apartman numarasını (alan adı). Tabii ki, bu bir aşırı basitleştirme ve çok kiracılı bilgisayarlar, yalnızca IP adres sunucusuna varsayılan bir siteye sahip olabilirler, ancak bunun iyi bir benzetme olduğunu düşünüyorum.
jmbertucci,

0

Aranacak anahtar terim "ad tabanlı sanal barındırma" dır.

İnsanlar aynı web sunucusuna birden fazla ana bilgisayar adı tahsis etmek ve her ana bilgisayar adı için farklı içerik sunmak istemektedir. Bu sanal barındırma olarak bilinir (daha yeni sanal makineler konseptiyle karıştırılmamalıdır).

Başlangıçta sanal barındırma sunucuya birden fazla IP adresi tahsis edilerek yapıldı, sunucu daha sonra kullanılan IP adresini temel alarak farklı içerikler gönderebildi, ancak bu israf gibi görünüyordu.

Bu nedenle, "ana bilgisayar" başlığı, başlangıçta bir uzantı olarak tanıtıldı, ancak daha sonra 1997'de http 1.1 belirtiminin zorunlu bir bölümünü yaptı. Bu başlık, müşterinin istediği ana bilgisayar adını belirtir. Sunucu daha sonra başlığın değerini temel alarak farklı içerikler sunabilir.


"ancak bu savurgan olarak görülüyordu." Sadece eski v4 bağlantıları için. Her sanal ana bilgisayarı farklı bir v6 adresine ayarlamak artık oldukça mümkün.
Qwertie

1
Halka açık hizmetlerinizi IPv6 ile yapmanın sadece makul bir şey olduğu noktadan itibaren hala çok uzağız.
Peter Green,

0

Web sunucularında maliyetleri düşürmek için, birçok web sunucusu birden fazla web sitesini barındırır. Bunu apache2 / nginx / etc içerisinde sanal konaklar veya Vhosts kullanarak yaparlar. Bu nedenle, doğrudan web sitesinin IP Adresine giderseniz, büyük olasılıkla "Apache çalışıyor" ekranını görürsünüz ya da muhtemelen web sunucusunun ana web sitesine yönlendirilirsiniz.

Bir Vhost gelen web sitesi adresine bakar ve etkin Vhosts dosyalarındaki ServerName veya ServerAlias ​​adlarıyla karşılaştırır. Bunlardan biri eşleşirse, söz konusu web sitesi yüklenir.

Web sitesi büyük bir yüke (çok sayıda benzersiz ziyaretçi / sayfa görüntüleme) sahip olmadıkça veya yüksek yük uygulamalarına sahip olmadıkça (youtube.com, facebook vb. Düşünün) paylaşılan bir sunucuda çalıştırmanın maliyeti daha düşüktür. Sadece bir Wordpress blog web sitesi işletmek için kendinize özel bir sunucu (60 $ / ay 'dan başlayan) almak için boşa harcanacaksınız Bir sunucuda 200'den fazla web sitesi bulunan bir sunucuda paylaşılan bir platform elde etmekte daha iyi olursunuz. Maliyetler 5 $ / ay civarında daha fazla olacaktır.

Bunu yapmanın bir başka nedeni de IP adreslerinin olmaması. Geriye kalan IPv4 adresleri yeterli değil. Yalnızca ev / iş ağları için NAT kullanımı ve kalan herhangi bir şey olan Vhost'ların kullanımı yoluyla olur. IPv6 ana akış haline gelse bile, sunucular Vhost'lara bağlı kalacaktır (sunucu maliyetleri).


0

Tahsis edilmiş bir IP adresi pahalıdır, bir sunucuda yeni bir web sitesi oluşturmak temel olarak ücretsizdir.

Ne olur ki, barındırma şirketi fiziksel bir sunucuya işaret eden tek bir IP adresi kiralar ve ardından "sanal ana bilgisayar" özelliğini kullanarak bu IP adresindeki binlerce web sitesini barındırır.

Posta kutusu adresini bir yere yazdığınızda, posta adresini sadece yazarsanız, ancak kutu numarası olmadan yazdığınızda posta teslim edilmez.


0

Teknik detayların çok sayıda cevabı var, fakat bence en basit üst düzey açıklama, bir web sunucusu IP adresinde http trafiğini doğru bir şekilde dinlese bile, sunucunun genellikle belirli bir alan için cevap verecek şekilde yapılandırılması gerektiğidir. isim ve bu isim müşterinin istediği şekilde olmalı (yani web tarayıcısı).

"Genellikle" derim, çünkü neredeyse her zaman bu şekilde yapılır, ancak aslında sadece IP adresi kullanılıyorsa, http sunucusunu cevaplayacak şekilde ayarlayabileceğiniz yöntemler vardır.


-1

Sanal IP'ler ve Özel IP'ler arasındaki farkları anlamamız gerekir.

Bir web sitesinin özel (paylaşılmayan) bir IP'si varsa, (örneğin) http://123.456.789.012 web sitesini açacaktır.

Bunu, sahip olduğum bir sitenin Özel IP adresi olan www.negativeiongenerators.com adresinde deneyin: http://75.126.128.174 Ancak başkalarının söylediği gibi, genellikle iyi bir fikir değildir.


1
Bu evrensel olarak doğru değil. Web sunucusu yapılandırmasına bağlıdır. Özel bir IP adresiniz olabilir ve yine de ana bilgisayar olmadan IP'ye yanıt veremezsiniz ve ayrıca paylaşılan bir IP adresiniz olabilir ve IP adresinin sunucudaki web sitelerinden birine işaret etmesini sağlayabilirsiniz. Ayrıca bir web sitesine yalnızca ip adresi üzerinden erişime izin vermede yanlış bir şey yoktur.
Qwertie
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.