Điểm:1

Ứng dụng hoạt động cục bộ, nhưng không thành công với 502 khi chạy trên đám mây - "lỗi kết nối ngược dòng hoặc ngắt kết nối/đặt lại trước tiêu đề. lý do đặt lại: lỗi giao thức"

lá cờ cn

Tôi có một ứng dụng được tạo dưới dạng hình ảnh Docker hoạt động chính xác cục bộ nhưng không thành công trong Google Cloud Run với "lỗi kết nối ngược dòng hoặc ngắt kết nối/đặt lại trước tiêu đề. Lý do đặt lại: lỗi giao thức"

Ứng dụng đang lắng nghe trên 0.0.0.0:8080 và không yêu cầu xác thực.Tôi đang chạy nó trong Docker cục bộ với

docker run --rm --name myapp -p 8080:8080 myapp:1.0

Với curl cục bộ, tôi nhận được phản hồi thành công trên /

$ cuộn tròn -v localhost:8080
* Đang cố gắng ::1...
* Bộ TCP_NODELAY
* Đã kết nối với cổng localhost (::1) 8080 (#0)
> NHẬN / HTTP/1.1
> Máy chủ: localhost:8080
> Tác nhân người dùng: curl/7.64.1
> Chấp nhận: */*
>
< HTTP/1.1 200 OK
< Loại nội dung: ứng dụng/json
< Khác nhau: Xuất xứ
< Ngày: Thứ bảy, ngày 24 tháng 7 năm 2021 13:54:11 GMT
< Độ dài nội dung: 2
<
* Kết nối #0 đến host localhost còn nguyên
OK* Đóng kết nối 0

Tôi đã triển khai tính năng này cho dịch vụ chạy trên đám mây của Google và khi thực hiện yêu cầu đầu tiên, tôi thấy đầu ra nhật ký từ ứng dụng của mình trong nhật ký chạy trên đám mây cho thấy ứng dụng đã bắt đầu và đang lắng nghe trên cổng 8080.

Tuy nhiên, một yêu cầu thất bại với

"lỗi kết nối ngược dòng hoặc ngắt kết nối/đặt lại trước các tiêu đề. lý do đặt lại: lỗi giao thức"

Đầu ra đầy đủ từ curl -v https://cloudrun-srv-stuff.a.run.app/ là như sau

* Đang thử 216.239.36.53...
* Bộ TCP_NODELAY
* Đã kết nối với cổng cloudrun-srv-lz5wvvl32a-ez.a.run.app (216.239.36.53) 443 (#0)
* ALPN, cung cấp h2
* ALPN, cung cấp http/1.1
* đặt thành công vị trí xác minh chứng chỉ:
* Tệp CA: /etc/ssl/cert.pem
  CApath: không có
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), bắt tay TLS, Chứng chỉ (11):
* TLSv1.2 (IN), bắt tay TLS, trao đổi khóa máy chủ (12):
* TLSv1.2 (IN), bắt tay TLS, Máy chủ hoàn tất (14):
* TLSv1.2 (OUT), bắt tay TLS, Trao đổi khóa máy khách (16):
* TLSv1.2 (OUT), Thay đổi mật mã TLS, Thay đổi thông số mật mã (1):
* TLSv1.2 (OUT), bắt tay TLS, Đã hoàn thành (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), bắt tay TLS, Đã hoàn thành (20):
* Kết nối SSL sử dụng TLSv1.2 / ECDHE-ECDSA-CHACHA20-POLY1305
* ALPN, máy chủ chấp nhận sử dụng h2
* Chứng chỉ máy chủ:
* chủ ngữ: C=US; ST=California; L=Nhìn ra núi; O=Google LLC; CN=*.a.run.app
* ngày bắt đầu: 28 tháng 6 01:08:46 2021 GMT
* ngày hết hạn: 20 tháng 9 01:08:45 2021 GMT
* subjectAltName: máy chủ "cloudrun-srv-stuff.a.run.app" khớp với "*.a.run.app" của chứng chỉ
* tổ chức phát hành: C=US; O=Dịch vụ tin cậy của Google; CN=GTS CA 1O1
* Chứng chỉ SSL xác minh ok.
* Sử dụng HTTP2, máy chủ hỗ trợ đa dụng
* Trạng thái kết nối đã thay đổi (đã xác nhận HTTP/2)
* Sao chép dữ liệu HTTP/2 trong bộ đệm luồng sang bộ đệm kết nối sau khi nâng cấp: len=0
* Sử dụng ID luồng: 1 (xử lý dễ dàng 0x7f83b4810a00)
> NHẬN / HTTP/2
> Máy chủ: cloudrun-srv-stuff.a.run.app
> Tác nhân người dùng: curl/7.64.1
> Chấp nhận: */*
>
* Trạng thái kết nối đã thay đổi (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 502
< độ dài nội dung: 87
< loại nội dung: văn bản/đồng bằng
< ngày: Thứ bảy, ngày 24 tháng 7 năm 2021 13:58:13 GMT
< máy chủ: Google Frontend
< x-cloud-trace-context: 1370fab1a02839b367048f855593cbef/5890123523738625787;o=1
< alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
<

Các bước tiếp theo trong việc gỡ lỗi này là gì?

John Hanley avatar
lá cờ cn
1) Bạn đã bật Cloud Run **end-to-end** http2 chưa? 2) Hiển thị lệnh triển khai gcloud. 3) Hiển thị mã thiết lập trình nghe ứng dụng. 4) Kiểm tra nhật ký Cloud Run cho dịch vụ này. 5) Thêm tùy chọn dòng lệnh curl **--http1.1** và kiểm tra lại.
lá cờ cn
Câu trả lời của John ở trên là vấn đề - http2 end to end đã được bật, nhưng mã Go của tôi không hỗ trợ H2C.
Điểm:5
lá cờ cn

John Hanely's response to my question identified the issue. https://cloud.google.com/run/docs/configuring/http2#console allowed me to disable http/2 end-to-end, and this resolved the issue.

lá cờ za
Bảng điều khiển GCP mô tả tùy chọn này đơn giản là "Bật kết nối http/2: Kết nối HTTP/2 với bản sửa đổi này sẽ được bật." Nó không nói rằng đó là từ đầu đến cuối và tôi tự hỏi có bao nhiêu người cũng gặp phải vấn đề này vì điều đó.
Reza avatar
lá cờ pk
Tôi gặp sự cố tương tự, thay đổi tùy chọn đó và triển khai lại không giải quyết được sự cố

Đă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.