Score:1

การส่ง args แบบเลือกจากพร็อกซี Nginx ไปยังอัปสตรีมผ่าน proxy_pass

ธง sb

ฉันมีพร็อกซี Nginx ที่กำหนดค่าสำหรับเซิร์ฟเวอร์ที่เก็บข้อมูลวัตถุ Minio S3

ฉันสามารถลบพารามิเตอร์แบบสอบถามบางส่วน (มากกว่าหนึ่ง agrs) เมื่อฉันส่งคำขอไปยังอัพสตรีม (Minio) และเก็บ args ที่เหลือได้หรือไม่

ตัวอย่างเช่น: นี่คือคำขอที่ได้รับจาก Nginx:

/my-private-bucket/my-image.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&w=320&X-Amz-Date=20211218T231908Z&h=200

ฉันต้องแปลงลิงก์ด้านบนเป็นลิงก์ด้านล่าง (เช่น ลบ args พิเศษ: w=320 และ h=200) แล้วใช้ proxy_pass:

/my-private-bucket/my-image.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20211218T231908Z

แน่นอนฉันสามารถใช้คำสั่ง IF ได้หลายคำสั่งในบล็อคที่ตั้ง: นี่คือตัวอย่าง หรือ อันนี้. แต่ฉันคิดว่าควรจะมีเหตุผลมากกว่านี้ บางอย่างเช่นการใช้ regex และ sed ใน bash:

echo [กล่าวถึง uri] | sed -E 's/&?[wh]=[0-9]*//g'

...หรือแม้แต่การใช้บล็อคแผนที่ใน Nginx:

แผนที่ $args $polish-args
{
    $args เริ่มต้น
    ~&?[wh]=[0-9]* ((สิ่งมหัศจรรย์))
}

ความคิดใด ๆ ?

Score:0
ธง us

หากคุณสามารถใช้วิธีอื่นได้ นั่นคือส่งรายการพารามิเตอร์ที่รู้จัก คุณสามารถใช้:

proxy_pass http://backend.example.com/path?param1=$arg_param1&param2=$arg_param2

หากลำดับอาร์กิวเมนต์ของคีย์ที่ถูกทิ้งยังคงเหมือนเดิมเสมอ คุณก็สามารถใช้ แผนที่:

แผนที่ $args $cleaned_args {
    $args เริ่มต้น;
    ^(.*)[?&]w=[0-9]+(.*)&h=[0-9]+(.*)$ $1$2$3;
    ^(.*)[?&]h=[0-9]+(.*)&w=[0-9]+(.*)$ $1$2$3;
}

นิพจน์ทั่วไปจะจับทุกอย่างก่อนหน้านี้ &ว หรือ ?วแล้วทุกอย่างก่อน &ชม และส่วนที่เหลือเป็นกลุ่มจับภาพ ตัวเลือกที่สองทำเช่นเดียวกันสำหรับการเรียงลำดับพารามิเตอร์ตรงข้าม

โพสต์คำตอบ

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