Score:0

หลายเส้นทางใน Nginx

ธง cn

ฉันลองใช้ nginx เป็นครั้งแรกและกำลังเรียกใช้ในเครื่อง ฉันสามารถรับบริการของฉันได้ แต่ฉันมีคำถามที่ทำให้งง เพราะฉันใช้ Microservice และระหว่างการอัปเกรด ฉันต้องการที่จะสามารถบล็อกบริการเฉพาะได้

ตอนนี้แต่ละบริการมีเส้นทางเช่น

\api\v1\wallet \api\v1\การ์ด

ปัญหาที่ฉันมีคือทั้งกระเป๋าเงินและเส้นทางบัตรอยู่ในบริการเดียวกัน

หากฉันมีเส้นทางที่แตกต่างกัน ฉันจะต้องทำซ้ำหรือมีวิธีใดที่จะทำให้ทำงานได้ดีขึ้น

นี่คือไฟล์ conf ของฉัน

worker_processes 4;

เหตุการณ์ { worker_connections 1024; }
http {

    เซิร์ฟเวอร์ {

        ฟัง 80;
        ชุดอักขระ utf-8;

        ตำแหน่ง ~ ^/api/v1/user {
            เขียนใหม่ ^/api/v1/user/(.*) /$1 ตัวแบ่ง;
            proxy_pass http://user-service:3001;
            proxy_http_version 1.1;
            proxy_set_header อัพเกรด $http_upgrade;
            proxy_set_header การเชื่อมต่อ 'อัปเกรด';
            proxy_set_header โฮสต์ $host;
            proxy_cache_bypass $http_upgrade;
        }

        ตำแหน่ง /api/v1/wallet/ {
            # เขียนใหม่ /api/v1/wallet/(.*) /$1 ตัวแบ่ง;
            proxy_pass http://wallet-service:3007/api/v1/wallet/;
            proxy_http_version 1.1;
            proxy_set_header อัพเกรด $http_upgrade;
            proxy_set_header การเชื่อมต่อ 'อัปเกรด';
            proxy_set_header โฮสต์ $host;
            proxy_cache_bypass $http_upgrade;
        }

        ตำแหน่ง /api/v1/card/ {
            # เขียนใหม่ /api/v1/wallet/(.*) /$1 ตัวแบ่ง;
            proxy_pass http://wallet-service:3007/api/v1/card/;
            proxy_http_version 1.1;
            proxy_set_header อัพเกรด $http_upgrade;
            proxy_set_header การเชื่อมต่อ 'อัปเกรด';
            proxy_set_header โฮสต์ $host;
            proxy_cache_bypass $http_upgrade;
        }

    }


}
in flag
คำถามคืออะไร? หากไม่มีเซิร์ฟเวอร์อัพสตรีม nginx จะส่งคืนข้อผิดพลาดของพร็อกซีไม่ว่าจะเกิดขึ้นที่ใด...
King avatar
cn flag
ฉันกำลังสอบถามว่าสามารถรับไวลด์การ์ดบางประเภทได้หรือไม่ ดังนั้นฉันจะไม่จำลองตำแหน่งโดยใช้เส้นทางที่แตกต่างกัน
Score:0
ธง us

คุณสามารถใช้การตั้งค่าต่อไปนี้:

ตำแหน่ง /api/v1/ผู้ใช้ {
    ...
}

ตำแหน่ง ~ ^/api/v1/(wallet|card)/$ {
    proxy_pass http://wallet-service:3007/api/v1/$1/;
    ...
}

ที่นี่เราใช้การจับภาพนิพจน์ทั่วไปเพื่อรับองค์ประกอบเส้นทางเข้าไป $1 ตัวแปรแล้วใช้ใน proxy_pass ปลายทาง.

หากคุณต้องการส่ง URL ที่เหลือผ่าน proxy_passจากนั้นคุณต้องจับภาพครั้งที่สอง:

ตำแหน่ง ~ ^/api/v1/(wallet|card)/(.*)$ {
    proxy_pass http://wallet-service:3007/api/v1/$1/$2;
    ...
}
King avatar
cn flag
คำแนะนำที่สองส่งคืน `nginx-proxy_1 | 2022/03/06 13:11:48 [ข้อผิดพลาด] 32#32: *4 ไม่มีตัวแก้ไขที่กำหนดเพื่อแก้ไขบริการกระเป๋าเงิน ไคลเอนต์: 172.20.0.1 เซิร์ฟเวอร์: คำขอ: "GET /api/v1/card/health HTTP /1.1", โฮสต์: "localhost" nginx-proxy_1 | 172.20.0.1 - - [06/Mar/2022:13:11:48 +0000] "GET /api/v1/card/health HTTP/1.1" 502 157 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML เช่น Gecko) เวอร์ชัน/15.1 Safari/605.1.15"`
King avatar
cn flag
อันแรกส่งคืนข้อผิดพลาด 502 ให้ฉันด้วย
us flag
คุณต้องกำหนดตัวแก้ไขชื่อด้วยคำสั่ง "ตัวแก้ไข" ใน nginx หากคุณต้องการใช้ชื่อสำหรับบริการแบ็กเอนด์ของคุณ ทางเลือกอื่นคือการใช้ที่อยู่ IP

โพสต์คำตอบ

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