Score:0

nginx: การใช้ proxy_set_header ส่งผลให้การเชื่อมต่ออัปสตรีมล้มเหลว

ธง in

ฉันมีการตั้งค่าพร็อกซีย้อนกลับ nginx ขั้นพื้นฐานสำหรับ openstreetmaps:

ผู้ปฏิบัติงาน_กระบวนการ 1;

error_log บันทึก/error.log ประกาศ;
บันทึก pid/nginx.pid;

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

http {

  เลื่อนออก 0;
  
  log_format logresponsetime '$remote_addr - $remote_user [$time_local] "$request" $status $bytes_sent "$http_referer" "$http_user_agent" $request_time $upstream_response_time';
  
  access_log บันทึก / access.log logresponsetime;
  ตัวแก้ไข 192.168.0.1 ipv6=ปิด;

  #default การตั้งค่าพร็อกซี:
  proxy_http_version 1.1;
  การเชื่อมต่อ proxy_set_header "";
  proxy_read_timeout 600;
  เปิด proxy_ssl_server_name;

  ต้นน้ำ tile.openstreetmap.org {
    เซิร์ฟเวอร์ tile.openstreetmap.org:443;
    Keepalive 10;
    keepalive_time 5m;
  }
   
  เซิร์ฟเวอร์ {
    ฟัง 480;
    access_log logs/osm.http.access.log logresponsetime;
    ชื่อเซิร์ฟเวอร์ $ชื่อโฮสต์;

    ที่ตั้ง / {
      ตัวแก้ไข 192.168.0.1 ipv6=ปิด;
      
      proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/91.0.4472.77 Safari/537.36";

      proxy_pass https://tile.openstreetmap.org;
    }
  }
}

มีบรรทัดสำหรับตั้งค่าส่วนหัว User-Agent เนื่องจาก OSM ต้องการ และฉันต้องการความเข้ากันได้กับไคลเอนต์ที่ไม่ส่งสตริงตัวแทนผู้ใช้ อย่างไรก็ตาม เมื่อ nginx ตั้งค่าส่วนหัวนี้ คำขอประมาณ 10% ล้มเหลว (nginx ส่งคืน 502 ไปยังไคลเอ็นต์) และบันทึกข้อผิดพลาด nginx ของฉันจะเต็มไปด้วยสิ่งนี้:

2021/06/13 14:37:49 [ข้อผิดพลาด] 67240#87020: *71 การเชื่อมต่อ() ล้มเหลว (10060: ความพยายามในการเชื่อมต่อล้มเหลวเนื่องจากบุคคลที่เชื่อมต่อไม่ตอบสนองอย่างถูกต้องหลังจากผ่านไประยะหนึ่ง หรือการเชื่อมต่อที่สร้างไว้ล้มเหลวเนื่องจากเชื่อมต่อแล้ว โฮสต์ตอบสนองไม่สำเร็จ) ขณะเชื่อมต่อกับอัปสตรีม ไคลเอ็นต์: 127.0.0.1 เซิร์ฟเวอร์: เซิร์ฟเวอร์ คำขอ: "GET /16/64153/41313.png HTTP/1.1" อัปสตรีม: "https://151.101.166.217:443 /16/64153/41313.png", โฮสต์: "localhost:480"

หากไม่มี proxy_set_header ทุกอย่างก็ดี คำขอในกรณีนี้ทั้งหมดสร้างจาก Chrome ดังนั้น User-Agent ตามที่เห็นโดยเซิร์ฟเวอร์ OSM ควรเหมือนกันในทั้งสองกรณี เวอร์ชัน nginx คือ 1.19.10 (windows) ผมทำอะไรผิดหรือเปล่า?

Richard Smith avatar
jp flag
คุณต้องวางคำสั่ง `proxy_set_header` ทั้งหมดไว้ในบล็อกเดียวกัน ถ้าคุณต้องการใช้ทั้งหมด มีสองคำสั่ง `proxy_set_header` ในการกำหนดค่าของคุณ และพวกมันอยู่ในบล็อกที่แตกต่างกัน
in flag
ขอบคุณ @RichardSmith แก้ปัญหาได้แล้ว! ชื่นชมมาก

โพสต์คำตอบ

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