การกำหนดที่อยู่ IP หลายแห่งให้กับ localhost OS X 10.6


9

ฉันพยายามโฮสต์เว็บไซต์หลายแห่งในพื้นที่ที่เปิดใช้ HTTPS แต่เพื่อที่จะทำสิ่งนี้ฉันต้องกำหนดค่าเครื่องท้องถิ่นของฉันให้ใช้หลายที่อยู่ IP สำหรับ localhost (ฉันเชื่อว่า) มีวิธีใดบ้างที่จะแก้ไขที่อยู่ IP หลาย ๆ เครื่องภายในเวลาเดียวกันได้หรือไม่

ฉันใช้ OS X 10.6 (รุ่นมาตรฐานไม่ใช่เซิร์ฟเวอร์) และการตั้งค่าเซิร์ฟเวอร์ MAMP

ขอบคุณ!

คำตอบ:


3

คุณไม่จำเป็นต้องมีหลาย ip เพื่อโฮสต์เว็บไซต์หลายแห่งบนเว็บเซิร์ฟเวอร์เดียว คุณต้องใช้ "โฮสต์เสมือน" (ด้วย https หากคุณต้องการ) ที่นี่มีคำแนะนำสำหรับโฮสต์เสมือนบน MAMP http://sawmac.com/mamp/virtual/


ในการโฮสต์หลายไซต์ที่เปิดใช้งาน HTTPS ฉันเชื่อว่าแต่ละไซต์ต้องมีที่อยู่ IP แยกต่างหาก ดู: stackoverflow.com/questions/11217538/…
user1086746

@ user1086746 Apache รองรับการระบุชื่อเซิร์ฟเวอร์ TLS เช่นเดียวกับเบราว์เซอร์ไคลเอนต์ที่สำคัญทั้งหมด .. เกือบทุก OS ที่ไม่ใช่ Windows XP NameVirtualHost *:443คำตอบที่คุณควรจะได้รับการเชื่อมโยงกับคำถามของคุณคือการตั้งค่า
เชนแมดเดน

@Shane ที่ยังคงไม่ทำงานเมื่อจัดการกับหลายไซต์โดยใช้ HTTPS ผ่านที่อยู่ IP เดียวกัน ฉันโพสต์สิ่งที่ลงเอยด้วยการทำงานให้ฉัน
user1086746

@ user1086746 ทำงานได้อย่างแน่นอนที่สุด ฉันเดาว่าคุณNameVirtualHostไม่ตรงกับ<VirtualHost>บล็อกของคุณหากคุณมีผลผูกพันกับ 127.0.0.1 โดยเฉพาะ ไม่ว่าในกรณีนี้เนื่องจากคุณพบโซลูชันที่ทำงานได้ แต่ NoNoNo นั้นถูกต้องคุณไม่ต้องการ IP เพิ่มเติม
เชนแมดเดน

ฉันต้องการให้การทำงานนี้ 'ถูกต้อง' เนื่องจากการตั้งค่าที่อยู่ IP เหล่านั้นเป็นขั้นตอนพิเศษ ฉันมี 2 NameVirtualHosts like: NameVirtualHost *:80 NameVirtualHost *:443 และได้ลองใช้ vhosts like: <VirtualHost _default_:443>and <VirtualHost 127.0.0.1:443>แต่ไม่ให้การเชื่อมต่อ HTTPS หลังจาก vhost ที่แสดงรายการแรก ฉันสามารถให้ไฟล์ ssl.conf และ vhost.conf แบบเต็มหากคุณสนใจ!
user1086746

22

ในนามแฝง localhost คุณสามารถใช้คำสั่ง terminal นี้เพื่อสร้าง 'loopback':

ifconfig lo0 alias 127.0.0.2

ด้วยการตั้งค่านามแฝง localhost คุณสามารถสร้างโฮสต์เสมือน HTTPS หลายรายการดังนี้:

<VirtualHost 127.0.0.1:443> ...... </VirtualHost>
<VirtualHost 127.0.0.2:443> ...... </VirtualHost>

คุณสามารถเริ่มต้นโฮสต์เหล่านี้เมื่อเริ่มต้นหากต้องการผ่าน cron ของรูท:

sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2

หวังว่านี่จะช่วยให้ทุกคนประสบปัญหาเดียวกันกับที่ฉันทำ!


การใช้echo PASSWORDเป็นความคิดที่น่ากลัว ทางเลือกที่ราคาน้ำมันดิบจะใส่อะไรบางอย่างใน cron รากเหมือนและsudo crontab -e @reboot ifconfig lo0 alias 127.0.0.2มีวิธีแก้ไขปัญหาที่หรูหรามากขึ้น แต่สิ่งที่เกี่ยวข้องกับรหัสผ่านของคุณในข้อความล้วนไม่เป็นที่ยอมรับ
chmac

1
ว้าวสนุกมาก! ฉันจะใช้นี้สำหรับการส่งต่อพอร์ต SSH การทำเช่นนี้ช่วยให้สามารถส่งต่อพอร์ตเดียวกันได้หลายครั้งโดยรับฟังที่อยู่ IP ในเครื่องที่แตกต่างกัน ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@hostเช่น จากนั้นคุณสามารถกำหนดชื่อโฮสต์ให้กับที่อยู่ IP ท้องถิ่นเหล่านี้ใน/etc/hostsไฟล์ของคุณหากจำเป็น กลายเป็นว่าค่อนข้างมีประโยชน์สำหรับการพัฒนาเว็บและการทดสอบ / การควบคุมระยะไกลโดยเฉพาะถ้าคุณไม่สามารถใช้พอร์ตที่กำหนดเองสำหรับแอปพลิเคชันของคุณ
djule5

2

คุณไม่จำเป็นต้องเพิ่มที่อยู่ IP เพิ่มเติมให้กับโลคัลโฮสต์บน Linux หรือ Windows พวกเขาจะตอบกลับตามค่าเริ่มต้นโดยไม่มีการกำหนดค่าเพิ่มเติมไปยังที่อยู่ IP ทั้งหมดจาก 127.0.0.0/8:

$ ping 127.254.0.100
PING 127.254.0.100 (127.254.0.100) 56(84) bytes of data.
64 bytes from 127.254.0.100: icmp_seq=1 ttl=64 time=0.026 ms

ดังนั้นเพียงแค่ทำให้แอปพลิเคชันของคุณฟังบน IP ใด ๆ จากช่วง 127.0.0.0/8 และคุณก็พร้อมที่จะไป

ตัวอย่าง:

หนึ่งคอนโซล:

$ nc -vvl 127.0.34.2 9022
Connection from 127.0.0.1 port 9022 [tcp/*] accepted
Hello

คอนโซลอื่น:

$ echo Hello | nc -vv 127.0.34.1 9022
nc: connect to 127.0.34.1 port 9022 (tcp) failed: Connection refused
$ echo Hello | nc -vv 127.0.34.2 9022
Connection to 127.0.34.2 9022 port [tcp/*] succeeded!

ตามที่ผู้วิจารณ์ระบุไว้มีความจำเป็นต้องเพิ่ม IP ลงในอินเตอร์เฟส localhost บน MacOS / Darwin อย่างชัดเจน


ฉันดูเหมือนจะไม่สามารถฟังได้หากไม่มีนามแฝงในอินเทอร์เฟซย้อนกลับ พยายามที่ผลตอบแทนnc -vvl 127.0.34.2 9022 nc: Can't assign requested addressด้วยนามแฝงที่กำหนดด้วยifconfig lo0 alias 127.0.34.2จะทำงานได้ ความคิดใด ๆ ที่เป็นสาเหตุ? ทำงานบน OSX Yosemite
djule5

1
ใน Mac มีเพียง 127.0.0.1 ที่ถูกแมปกับอุปกรณ์ lo0 (ลูปแบ็ค) คุณต้องเพิ่มนามแฝงลงในอุปกรณ์ลูปแบ็คด้วยตนเองเพื่อให้สามารถใช้งานได้ แต่ใน Linux ทั้งหมด 127.0.0. * ถูกแมปไปยังอุปกรณ์ลูปแบ็ค
ศรีราม

1
สำหรับ Mac: sudo ifconfig lo0 นามแฝง 127.0.0.2 ขึ้นไป (และอื่น ๆ จะต้องทำทีละรายการสำหรับแต่ละที่อยู่)
lilalinux
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.