Score:0

nginx - limit_conn_zone ไม่สามารถทำงานได้

ธง br

ฉันต้องการจำกัดการเข้าถึงเพียงหนึ่งการเชื่อมต่อต่อ IP

ตัวอย่างโค้ดที่ฉันใช้จากหน้าอย่างเป็นทางการ:

ตั้งค่าโซนหน่วยความจำที่ใช้ร่วมกันและจำนวนการเชื่อมต่อสูงสุดที่อนุญาตสำหรับค่าคีย์ที่กำหนดเมื่อเกินขีดจำกัดนี้ เซิร์ฟเวอร์จะส่งกลับข้อผิดพลาดในการตอบกลับคำขอ ตัวอย่างเช่น คำสั่ง

limit_conn_zone $binary_remote_addr โซน = addr:10m;

เซิร์ฟเวอร์ {
    ตำแหน่ง /ดาวน์โหลด/ {
        limit_conn เพิ่ม 1;
    }

อนุญาตการเชื่อมต่อเพียงครั้งเดียวต่อที่อยู่ IP ในแต่ละครั้ง

ฉันใช้ nginx ภายในคอนเทนเนอร์นักเทียบท่า และนี่คือ default.conf:

limit_conn_zone $binary_remote_addr โซน = addr:10m;
รูท /usr/share/nginx/html;
เซิร์ฟเวอร์ {
  ฟัง 8080;
  ตำแหน่ง /ดาวน์โหลด/ {
      limit_conn เพิ่ม 1;
      เปิดดัชนีอัตโนมัติ;
  }
}

นี่คือลิงค์ที่อธิบายวิธีทดสอบว่าข้อ จำกัด IP ใช้งานได้หรือไม่:

https://blog.actorsfit.com/a?ID=00700-9f36887c-5d4b-4f0e-baf5-725ff22f2e42

คำสั่ง curl ที่ฉันใช้:

ขด -v http://192.168.0.13:8080/downloads/ http://192.168.0.13:8080/downloads/

การตอบสนอง:

* ลอง 192.168.0.13:8080...
* ตั้งค่า TCP_NODELAY
* เชื่อมต่อกับพอร์ต 192.168.0.13 (192.168.0.13) 8080 (#0)
> รับ /ดาวน์โหลด/ HTTP/1.1
> โฮสต์: 192.168.0.13:8080
> User-Agent: curl/7.68.0
> ยอมรับ: */*
> 
* ทำเครื่องหมายที่บันเดิลว่าไม่รองรับการใช้งานหลายอย่าง
< HTTP/1.1 200 ตกลง
< เซิร์ฟเวอร์: nginx/1.21.4
< วันที่: อา. 28 พ.ย. 2564 11:53:36 GMT
< ประเภทเนื้อหา: text/html
< การเข้ารหัสการถ่ายโอน: chunked
< การเชื่อมต่อ: รักษาชีวิต
< 
<html>
<head><title>ดัชนีของ /downloads/</title></head>
<เนื้อหา>
<h1>ดัชนีของ /ดาวน์โหลด/</h1><hr><pre><a href="../">../</a>
<a href="text">ข้อความ</a> 28-พฤศจิกายน-2564 10:51 2
</pre><hr></body>
</html>
* การเชื่อมต่อ #0 ไปยังโฮสต์ 192.168.0.13 ยังคงอยู่
* พบบันเดิลสำหรับโฮสต์ 192.168.0.13: 0x55e1cd185b50 [ซีเรียล]
* มัลติเพล็กซ์ไม่ได้แม้ว่าเราต้องการ!
* ใช้การเชื่อมต่อที่มีอยู่อีกครั้ง! (#0) กับโฮสต์ 192.168.0.13
* เชื่อมต่อกับพอร์ต 192.168.0.13 (192.168.0.13) 8080 (#0)
> รับ /ดาวน์โหลด/ HTTP/1.1
> โฮสต์: 192.168.0.13:8080
> User-Agent: curl/7.68.0
> ยอมรับ: */*
> 
* ทำเครื่องหมายที่บันเดิลว่าไม่รองรับการใช้งานหลายอย่าง
< HTTP/1.1 200 ตกลง
< เซิร์ฟเวอร์: nginx/1.21.4
< วันที่: อา. 28 พ.ย. 2564 11:53:36 GMT
< ประเภทเนื้อหา: text/html
< การเข้ารหัสการถ่ายโอน: chunked
< การเชื่อมต่อ: รักษาชีวิต
< 
<html>
<head><title>ดัชนีของ /downloads/</title></head>
<เนื้อหา>
<h1>ดัชนีของ /ดาวน์โหลด/</h1><hr><pre><a href="../">../</a>
<a href="text">ข้อความ</a> 28-พฤศจิกายน-2564 10:51 2
</pre><hr></body>
</html>
* การเชื่อมต่อ #0 ไปยังโฮสต์ 192.168.0.13 ยังคงอยู่

บันทึก Nginx:

192.168.0.3 - - [28/พ.ย./2021:11:53:36 +0000] "GET /downloads/ HTTP/1.1" 200 276 "-" "curl/7.68.0" "-"
192.168.0.3 - - [28/พ.ย./2021:11:53:36 +0000] "GET /downloads/ HTTP/1.1" 200 276 "-" "curl/7.68.0" "-"

ฉันลองแบบเดียวกันกับ telnet และได้ผลเหมือนเดิม ฉันสามารถเข้าถึงเซิร์ฟเวอร์ได้หลายครั้งจาก IP เดียวกัน

โพสต์คำตอบ

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