เป็นไปได้ไหมที่จะทำให้ Nginx รับฟังพอร์ตต่าง ๆ ?


82

ฉันสร้าง Nginx หนึ่งตัวด้วย Linux Azure VM หนึ่งตัวเป็นไปได้หรือไม่ที่จะทำให้ nginx ฟังพอร์ตต่าง ๆ ดังนั้นเมื่อฉันเปลี่ยนหมายเลขพอร์ตเนื้อหาจะแตกต่างกัน ฉันพบว่าอาจมีการขัดแย้งกันหากฉันสร้างสองพอร์ตขึ้นไปที่เกี่ยวข้องกับ HTTP บน VM มีใครช่วยฉันได้บ้าง

คำตอบ:


89

ใช่แล้ว.

สิ่งที่คุณอาจต้องการคือหลาย ๆ stanzas "เซิร์ฟเวอร์" แต่ละพอร์ตที่แตกต่างกัน แต่อาจ (อาจจะ) ชื่อ server_name เดียวกันให้บริการเนื้อหา "แตกต่าง" อย่างเหมาะสมภายในแต่ละคนอาจมีรากเอกสารที่แตกต่างกันในแต่ละเซิร์ฟเวอร์

เอกสารฉบับเต็มอยู่ที่นี่: http://nginx.org/en/docs/http/server_names.html

ตัวอย่าง:

server {
    listen       80;
    server_name  example.org  www.example.org;
    root         /var/www/port80/
}

server {
    listen       81;
    server_name  example.org  www.example.org;
    root         /var/www/port81/
}


16
มันน่ารำคาญที่ไม่สามารถทำได้listen 80 81;ใช่ไหม ดี ...
Matt Fletcher

@MattFletcher เป็นไปได้ที่จะทำสิ่งที่คล้ายกันดูความคิดเห็นของ Felix: serverfault.com/a/755791/308219
PaulMest

182

คุณยังสามารถทำสิ่งต่อไปนี้:

server {
    listen 80;
    listen 8000;
    server_name example.org;
    root /var/www/;
}

2
มันเยี่ยมมาก โดยเฉพาะอย่างยิ่งความสามารถในการเปลี่ยนการกำหนดค่าเซิร์ฟเวอร์ในบริบทของเซิร์ฟเวอร์เพียงหนึ่งดูเหมือนว่าเหนือกว่าความเสี่ยงที่จะเปลี่ยนหนึ่งและปล่อยอื่น ๆ ไม่เปลี่ยนแปลง ...
Aaron Sofaer

6
นี่ไม่ได้ตอบคำถามที่ @billcyz ถาม เขาถามสำหรับพอร์ตที่แตกต่างกันและเนื้อหาที่แตกต่างกัน คำตอบนี้จะช่วยให้พอร์ตที่แตกต่างกับเนื้อหาเดียวกัน
Isaac Sutherland

@ Krishnendu: "สะดวกสบายมากขึ้น"? สะดวกกว่าอะไร นี่ไม่ได้ตอบคำถาม OP ในกรณีนั้นทั้ง: 80 และ: 8000 ชี้ไปที่เนื้อหาเดียวกัน OP ถามอย่างชัดเจน "เมื่อฉันเปลี่ยนหมายเลขพอร์ตเนื้อหาจะแตกต่างกัน" ดังนั้นโพสต์จากเครก Miskell คำตอบที่ดีมากกับคำถามกว่านี้หนึ่ง
cedbeu

3
@cedbeu: ใช่คุณถูกต้องในบริบทของคำถามที่ถามคำตอบของ Craig Miskell เหมาะสมกว่า ฉันกำลังมองหาโซลูชันอื่นที่ฉันต้องการให้บริการเนื้อหาเดียวกันในหลายพอร์ตนี่คือสิ่งที่ฉันต้องการ อีกครั้งสำหรับคำถามที่ได้รับถามคำถามอื่นที่เหมาะสมกว่าขออภัยหากฉันทำให้บางคนเข้าใจผิดมันเป็นความผิดพลาดที่ซื่อสัตย์จากด้านข้างของฉัน
Krishnendu

@ Krishnendu ไม่มีปัญหา :) ทุกอย่างชัดเจนแล้วตอนนี้
cedbeu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.