Score:0

วิธีตั้งค่า proxy_pass แบบมีเงื่อนไขตามค่า $host

ธง ve

ฉันกำลังพยายามตั้งค่า proxy_pass ตามค่าโฮสต์ $ ฉันลองสิ่งนี้:

ตำแหน่ง /api/v1/ {
    ถ้า ($host = .*\.npreprod.company.com)
    {
            proxy_pass https://frontend-api.preprod.company.com/api/v1/;
    }
}

อย่างไรก็ตาม ฉันได้รับข้อผิดพลาด

nginx: [emerg] "proxy_pass" ไม่สามารถมีส่วน URI ในตำแหน่งที่กำหนดโดยนิพจน์ทั่วไป หรือภายในตำแหน่งที่มีชื่อ หรือภายในคำสั่ง "if" หรือภายในบล็อก "limit_except" ใน /etc/nginx/sites-enabled/nuxtjs.conf :45

ดังนั้นวิธีที่เหมาะสมในการบรรลุเป้าหมายนี้คืออะไร

jp flag
สิ่งนี้ตอบคำถามของคุณหรือไม่ [regex ตำแหน่ง Nginx ใช้ไม่ได้กับพร็อกซีพาส](https://serverfault.com/questions/649151/nginx-location-regex-doesnt-work-with-proxy-pass)
in flag
ฉันไม่คิดว่านี่เป็นสำเนาที่ถูกต้อง ฉันค่อนข้างแน่ใจว่าเรามีคำถามอย่างน้อยหนึ่งข้อเกี่ยวกับ [if is evil problem](https://www.nginx.com/resources/wiki/start/topics/ความลึก/ifisevil/) แต่ฉันทำไม่ได้ ค้นหาหนึ่งในขณะนี้
simo avatar
ve flag
@AlexD ฉันไม่แน่ใจว่าฉันจะใช้คำตอบสำหรับคำถามนั้นในกรณีของฉันได้อย่างไร
jp flag
@GeraldSchneider อันนี้อธิบายวิธีจับคู่ชื่อโฮสต์ให้ดีขึ้น https://serverfault.com/questions/286828/nginx-matching-server-host-name-in-location-directive
Richard Smith avatar
jp flag
แทนที่จะทดสอบค่าของ '$host' ภายในบล็อก 'เซิร์ฟเวอร์' คุณสามารถสร้างบล็อก 'เซิร์ฟเวอร์' แยกต่างหากได้ ดู[เอกสารนี้](http://nginx.org/en/docs/http/server_names.html)
simo avatar
ve flag
ขอบคุณ@AlexD ใช่ นั่นคือสิ่งที่ฉันทำเสร็จแล้ว มันได้ผลดี

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา