Điểm:0

nginx: Việc sử dụng proxy_set_header dẫn đến kết nối ngược dòng không thành công

lá cờ in

Tôi có một thiết lập proxy ngược nginx rất cơ bản cho openstreetmaps:

worker_processes 1;

thông báo error_log log/error.log;
nhật ký pid/nginx.pid;

sự kiện {
    công_nhân kết_nối 1024 ;
}

http {

  hoãn_xuất 0;
  
  log_format logresponsetime '$remote_addr - $remote_user [$time_local] "$request" $status $bytes_sent "$http_referer" "$http_user_agent" $request_time $upstream_response_time';
  
  nhật ký access_log/access.log logresponsetime;
  trình phân giải 192.168.0.1 ipv6=tắt;

  #cài đặt proxy mặc định:
  proxy_http_version 1.1;
  proxy_set_header Kết nối "";
  proxy_read_timeout 600;
  proxy_ssl_server_name bật;

  gạch ngược dòng.openstreetmap.org {
    máy chủ tile.openstreetmap.org:443;
    lưu giữ 10;
    keepalive_time 5m;
  }
   
  người phục vụ {
    nghe 480;
    nhật ký access_log/osm.http.access.log logresponsetime;
    tên máy chủ $ tên máy chủ;

    địa điểm / {
      trình phân giải 192.168.0.1 ipv6=tắt;
      
      proxy_set_header Tác nhân người dùng "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/91.0.4472.77 Safari/537.36";

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

Có một dòng để đặt tiêu đề Tác nhân người dùng vì OSM yêu cầu tiêu đề đó và tôi cần khả năng tương thích với ứng dụng khách không gửi chuỗi tác nhân người dùng. Tuy nhiên, khi nginx đặt tiêu đề này, khoảng 10% yêu cầu không thành công (nginx trả về 502 cho máy khách) và nhật ký lỗi nginx của tôi chứa thông tin này:

13/06/2021 14:37:49 [lỗi] 67240#87020: *71 connect() fail (10060: Nỗ lực kết nối không thành công do bên được kết nối không phản hồi đúng sau một khoảng thời gian hoặc kết nối được thiết lập không thành công do đã kết nối máy chủ không phản hồi) trong khi kết nối với thượng nguồn, máy khách: 127.0.0.1, máy chủ: máy chủ, yêu cầu: "GET /16/64153/41313.png HTTP/1.1", ngược dòng: "https://151.101.166.217:443 /16/64153/41313.png", máy chủ lưu trữ: "localhost:480"

Không có proxy_set_header, mọi thứ đều ổn. Tất cả các yêu cầu trong trường hợp này đều được tạo từ chrome, do đó, Tác nhân người dùng mà máy chủ OSM nhìn thấy phải giống nhau trong cả hai trường hợp. phiên bản nginx là 1.19.10 (windows). Tôi đang làm gì sai?

Richard Smith avatar
lá cờ jp
Bạn cần đặt tất cả các câu lệnh `proxy_set_header` của mình trong cùng một khối, nếu bạn muốn áp dụng tất cả các câu lệnh đó. Có hai câu lệnh `proxy_set_header` trong cấu hình của bạn và chúng nằm trong các khối khác nhau.
lá cờ in
cảm ơn @RichardSmith, vấn đề đã được giải quyết! Nhiều đánh giá cao

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.