> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
ฉันพิมพ์93.184.216.34
แทนhttp://example.com
ใน Chrome ไม่โหลดเว็บไซต์ ทำไม?
> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
ฉันพิมพ์93.184.216.34
แทนhttp://example.com
ใน Chrome ไม่โหลดเว็บไซต์ ทำไม?
คำตอบ:
เพราะHost
ส่วนหัวHTTP ที่เหมาะสมมักจะต้องได้รับเว็บไซต์ที่ตั้งใจจริง
เป็นเรื่องธรรมดามากที่จะโฮสต์เว็บไซต์หลายแห่งในที่อยู่ IP เดียวกันและแยกแยะระหว่างเว็บไซต์เหล่านั้นตามHost
ส่วนหัวHTTP ที่ระบุโดยไคลเอนต์ (รวมถึงค่า TLS SNI ในปัจจุบันในกรณีของ HTTPS)
นั่นคือเมื่อคุณป้อนhttp://example.com
ลงในเบราว์เซอร์ของคุณHost
ส่วนหัวเป็นแต่ที่ไม่ได้เป็นกรณีที่เมื่อคุณป้อนexample.com
93.184.216.34
คุณเข้าถึงเว็บเซิร์ฟเวอร์เดียวกันในทั้งสองกรณี แต่คุณได้รับการตอบกลับที่แตกต่างกัน (ในกรณีนี้ 200 กับ 404)
Host
และสิ่งที่เว็บเซิร์ฟเวอร์โดยทั่วไปจะใช้เพื่อ? มันยากที่จะค้นหาออนไลน์เพราะคำนั้นมากเกินไป
curl -H "Host: example.com" http://93.184.216.34/
หรืออะไรแบบนั้น
example.com example.net example.org example.edu
อยู่เดียวกัน (es) ซึ่งเป็นเหตุผลว่าทำไมมันต้องการชื่อในส่วนหัวของโฮสต์
เพราะโดยปกติแล้วเว็บเซิร์ฟเวอร์จะใช้เทคโนโลยี "เซิร์ฟเวอร์เสมือน" และสามารถตอบคำขอ HTTP ของคุณภายในชื่อโดเมนที่คุณร้องขอ แต่ไม่ใช่ที่อยู่ IP ของเว็บเซิร์ฟเวอร์ ขอขอบคุณที่ซ่อนชื่อโดเมนมากกว่าหนึ่งชื่อในที่อยู่ IP เดียว
ตัวอย่างเช่นเว็บเซิร์ฟเวอร์Apacheสามารถตอบกลับคำขอ HTTP ของคุณด้วยที่อยู่ IP โดยใช้หัวข้อนี้:
<VirtualHost *:80>
ServerName Default
...
</VirtualHost>
หรือถ้าไม่มี VirtualHost ใช้ในการกำหนดค่าเลย
ฟีเจอร์ VirtualHost ใน Apache เปิดตัวในปี 1996
ในApacheคุณสามารถโฮสต์เว็บไซต์จำนวนมากโดยใช้ที่อยู่ IP เดียวเพียงแห่งเดียว สิ่งนี้เรียกว่าการโฮสต์เสมือน เป็นวิธีการสร้างโดเมนย่อยแม้กระทั่งโดเมนแบบสแตนด์อโลน สิ่งนี้ทำได้โดยการตั้งค่าไฟล์กำหนดค่า Apache ที่มีคำสั่ง VirtualHost สำหรับแต่ละโดเมน / โดเมนย่อย
ตัวอย่างเซิร์ฟเวอร์ HTTP ที่มีโฮสต์เสมือนสองโฮสต์ example1.com และ example2.com สามารถมีลักษณะเช่นนี้ (คำจำกัดความที่อยู่ IP):
<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>
นอกจากนี้ยังสามารถมีลักษณะเช่นนี้ (นิยามตามชื่อ):
<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>
ในทั้งสองกรณีบันทึกโฮสต์เสมือนสองรายการจะถูกสร้างขึ้นภายในหน่วยความจำและใช้โดย Apache เพื่อเปรียบเทียบกับเมื่อมีคำขอ URI มาถึง
เมื่อผู้ใช้พิมพ์ที่อยู่ IP ผ่านตัวแทนผู้ใช้โฮสต์เสมือนแรกที่ปรากฏในไฟล์การกำหนดค่าจะใช้เป็นโดเมนหลัก (เช่นในกรณีนี้ example1.com)
เมื่อผู้ใช้พิมพ์ชื่อโดเมนคำขอจะถูกส่งไปยังเครือข่ายอินเทอร์เน็ต DNS สาธารณะ (ICANN) ซึ่งให้ที่อยู่ IP ที่เชื่อมโยงกับมัน คุณลงทะเบียนทั้งคู่ผ่านนายทะเบียน ICANN (เช่น GoDaddy) คุณต้องมีทั้งสองอย่างถูกต้องและให้เวลาก่อนที่จะเผยแพร่ไปยังเซิร์ฟเวอร์ DNS ทั้งหมดในเครือข่าย ICANN วันนี้อาจใช้เวลาถึง 24 ชั่วโมง
เมื่อคำขอถูกส่งไปยังเซิร์ฟเวอร์ Apache HTTP ของคุณที่อยู่ IP และชื่อโดเมนจะถูกจับคู่กับรายการเรคคอร์ด VirtualHost ภายใน เมื่อพบหนึ่งรูทเอกสารจะถูกใช้เพื่อจัดรูปแบบพา ธ ของระบบไฟล์แบบเต็มไปยังทรัพยากรวัตถุเพื่อกลับไปยังเอเจนต์ผู้ใช้ มิฉะนั้นจะส่ง HTTP 404 พร้อมกับเอกสารข้อผิดพลาดที่เกี่ยวข้อง
ฉันชอบใช้คำศัพท์ "บ้าน"
คุณสามารถส่งจดหมายถึงบ้านได้ง่ายๆโดยไม่มีชื่อและมันจะมาถึงบ้าน
หากคุณใส่ชื่อบุคคลนั้นคุณจะส่งถึงผู้รับที่ต้องการ
ปลายทางเหมือนกัน แต่จะจัดการอย่างไรเมื่อมาถึงบ้านแตกต่างกัน
เมื่อคุณระบุไซต์คือ www.example.com เซิร์ฟเวอร์จะรู้วิธีจัดการกับคำขอและโฮสต์ใดที่มีไว้สำหรับและไซต์ใดที่จะให้บริการกลับ
คำสำคัญในการค้นหาคือ "ชื่อโฮสต์เสมือน"
ผู้คนต้องการจัดสรรชื่อโฮสต์หลายชื่อให้กับเว็บเซิร์ฟเวอร์เดียวกันและแสดงเนื้อหาที่แตกต่างกันสำหรับแต่ละชื่อโฮสต์ สิ่งนี้เรียกว่าโฮสติ้งเสมือนจริง (เพื่อไม่ให้สับสนกับแนวคิดล่าสุดของเครื่องเสมือน)
เริ่มแรกการโฮสต์เสมือนทำได้โดยการจัดสรรที่อยู่ IP หลายแห่งให้กับเซิร์ฟเวอร์เซิร์ฟเวอร์อาจส่งเนื้อหาต่าง ๆ ตามที่อยู่ IP ที่ใช้ แต่สิ่งนี้ถือว่าสิ้นเปลือง
ดังนั้นจึงมีการแนะนำส่วนหัว "โฮสต์" เริ่มแรกเป็นส่วนขยาย แต่หลังจากนั้นจึงสร้างส่วนบังคับของข้อมูลจำเพาะ http 1.1 ในปี 1997 ส่วนหัวนี้ระบุชื่อโฮสต์ที่ไคลเอ็นต์ขอ เซิร์ฟเวอร์สามารถแสดงเนื้อหาที่แตกต่างกันตามค่าของส่วนหัว
เพื่อลดต้นทุนให้กับเว็บเซิร์ฟเวอร์เซิร์ฟเวอร์เว็บจำนวนมากโฮสต์เว็บไซต์หลายแห่ง พวกเขาทำสิ่งนี้โดยใช้โฮสต์เสมือนหรือ Vhosts ใน apache2 / nginx / etc ดังนั้นหากคุณไปที่ที่อยู่ IP ของเว็บไซต์โดยตรงคุณจะได้รับหน้าจอ "Apache is working" หรืออาจถูกเปลี่ยนเส้นทางไปยังเว็บไซต์หลักของเว็บเซิร์ฟเวอร์
Vhost จะดูที่อยู่เว็บไซต์ที่เข้ามาและเปรียบเทียบกับชื่อเซิร์ฟเวอร์หรือชื่อเซิร์ฟเวอร์เซิร์ฟเวอร์ในไฟล์ Vhosts ที่เปิดใช้งาน หากหนึ่งในนั้นตรงกับที่โหลดเว็บไซต์เฉพาะ
เว้นแต่เว็บไซต์จะมีการโหลดจำนวนมาก (จำนวนผู้เข้าชม / การดูหน้าเว็บที่ไม่ซ้ำกันจำนวนมาก) หรือขับเคลื่อนแอปพลิเคชั่นที่โหลดสูง (คิดว่า youtube.com, facebook เป็นต้น) อาจจะคุ้มค่ากว่าในการทำงานบนเซิร์ฟเวอร์ที่ใช้ร่วมกัน มันจะเสียเงินเพื่อให้ตัวเองเป็นเซิร์ฟเวอร์เฉพาะ (เริ่มต้นที่ $ 60 / เดือน) เพียงเพื่อเรียกใช้เว็บไซต์บล็อก Wordpress คุณควรใช้แพลตฟอร์มที่ใช้ร่วมกันบนเซิร์ฟเวอร์ที่มีเว็บไซต์มากกว่า 200 แห่งบนเซิร์ฟเวอร์เดียว ค่าใช้จ่ายจะมากขึ้นในพื้นที่ $ 5 / เดือน
เหตุผลในการทำเช่นนี้ก็คือการขาดที่อยู่ IP มีที่อยู่ IPv4 เหลืออยู่ไม่เพียงพอ มันเป็นเพียงการใช้ NAT สำหรับเครือข่ายในบ้าน / ธุรกิจและการใช้ Vhosts ที่เรามีเหลืออยู่เลย แม้ว่า IPv6 จะกลายเป็นสตรีมหลักเซิร์ฟเวอร์ก็อาจติดกับ Vhosts (ต้นทุนเซิร์ฟเวอร์)
ที่อยู่ IP เฉพาะนั้นมีราคาแพงในขณะที่การสร้างเว็บไซต์ใหม่บนเซิร์ฟเวอร์นั้นฟรี
สิ่งที่เกิดขึ้นคือ บริษัท โฮสติ้งเช่าที่อยู่ IP เดียวที่ชี้ไปยังเซิร์ฟเวอร์จริงจากนั้นโฮสต์เว็บไซต์หลายพันแห่งบนที่อยู่ IP นั้นโดยใช้คุณสมบัติ "โฮสต์เสมือน"
คิดเหมือนตู้ไปรษณีย์ถ้าคุณเพียงแค่จดที่อยู่ที่ทำการไปรษณีย์ แต่ไม่มีหมายเลขกล่องจดหมายจะไม่ถูกส่ง
มีคำตอบมากมายที่นี่พร้อมรายละเอียดด้านเทคนิค แต่ฉันคิดว่าคำอธิบายระดับสูงที่ง่ายที่สุดคือแม้ว่าเว็บเซิร์ฟเวอร์จะรับฟังการรับส่งข้อมูล http ของที่อยู่ IP อย่างถูกต้องเซิร์ฟเวอร์มักจะต้องกำหนดค่าให้ตอบโดเมนเฉพาะด้วย ชื่อและชื่อนั้นจะต้องอยู่ในคำขอที่ส่งโดยลูกค้า (เช่นเว็บเบราว์เซอร์)
ฉันพูดว่า "มักจะ" เพราะมันทำแบบนี้เกือบทุกครั้ง แต่ในความเป็นจริงมีวิธีที่คุณสามารถตั้งค่าเซิร์ฟเวอร์ http เพื่อตอบถ้ามีการใช้ที่อยู่ IP เท่านั้น
เราจำเป็นต้องเข้าใจความแตกต่างระหว่าง IP เสมือนและ IP เฉพาะ
หากเว็บไซต์มีIP เฉพาะ (ไม่แบ่งปัน) ดังนั้น (ตัวอย่าง) http://123.456.789.012จะแสดงเว็บไซต์ขึ้นมา
ลองใช้นี่ซึ่งเป็นที่อยู่ IP เฉพาะของเว็บไซต์ที่ฉันเป็นเจ้าของ www.negativeiongenerators.com: http://75.126.128.174 แต่อย่างที่คนอื่นพูด