nginx: không có thượng nguồn trực tiếp trong khi kết nối với thượng nguồn


15

502 lỗi cổng xấu được hiển thị khi chuyển đổi giữa các trang của trang và một số lần trên trang chủ nhưng không phải cho yêu cầu đầu tiên trên trang chủ, đó chỉ là khi một trang khác chuyển hướng đến nó. và nó xảy ra đối với một số tệp javascript

cân bằng tải được cấu hình trên hai dòng php1 php2 đều là máy chủ apache.

Khi tôi kiểm tra nhật ký lỗi tôi thích:

no live upstreams while connecting to upstream

[error] 27212#0: *314 no live upstreams while connecting to   upstream, client: ip_address , server: example.com, request: "GET / HTTP/1.1", upstream: "http://example.com", host: "example.com", referrer: "http://example.com/mypages/"

và đây là cấu hình máy chủ cân bằng tải

  upstream example.com  {
    #  ip_hash;
      server php01 max_fails=3 fail_timeout=15s;
      server php02 max_fails=3 fail_timeout=15s;
    }

    server {
      listen IP:80;
      server_name example.com;
      access_log /var/log/nginx/example.com.access;
      error_log /var/log/nginx/example.com.error error;

     location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass  http://$server_name/$uri;
        proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
        proxy_cache_bypass $http_pragma $http_authorization;
        proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authorization;
      }

    }

Tôi đã tìm kiếm trong nhiều giờ và không có gì hữu ích khi tìm thấy các luồng của tôi và không có vấn đề gì với chúng.


Các máy chủ ngược dòng của bạn (php01, php02) có hoạt động không? Bạn có thể telnet từ máy ngnix cho họ?
neutrinus

Chúng được kết nối.
Mohammad Jolani

Bạn đã kiểm tra rằng các máy chủ ngược dòng có đủ các quy trình đang chạy để xử lý lưu lượng không? Bạn nên kiểm tra nhật ký máy chủ ngược dòng nếu họ từ chối yêu cầu vì một số lý do.
Tero Kilkanen

Tôi đã làm và không có vấn đề với bất kỳ nhật ký lỗi ngược dòng, và không có nhật ký truy cập cho các yêu cầu cổng xấu.
Mohammad Jolani

Bạn đã tìm thấy một giải pháp cho vấn đề này?
flickerfly

Câu trả lời:


4

Đây không phải là vấn đề với Nginx, nó là một vấn đề với các phụ trợ PHP của bạn không đáp ứng kịp thời. Bạn có thể thêm đăng nhập vào Nginx để giúp xác nhận điều này .

Là một điểm tham chiếu thứ hai, bạn có thể toptrên máy chủ và kiểm tra thủ công xem PHP có đang đập CPU trong một khoảng thời gian không, một chỉ báo khác về phản hồi chậm.

Nếu các phản hồi rất chậm từ PHP vẫn ổn với bạn, bạn có thể yêu cầu Nginx đợi lâu hơn trước khi từ bỏ:

 # Wait 5 minutes before giving up on the backend!
 proxy_read_timeout 5m; 

Bằng cách kiểm tra nhật ký với thông tin thời gian được liên kết ở trên, bạn phải tìm ra những yêu cầu nào chậm để PHP xử lý.

Để thu hẹp vấn đề, hãy gửi những yêu cầu này trực tiếp đến phần phụ trợ PHP.

Tùy thuộc vào những gì đang xảy ra, bạn cũng có thể kích hoạt bộ đệm của một số yêu cầu trong Nginx, tránh một số yêu cầu chậm.


0

Không biết nó có giống nhau không nhưng điều làm việc với tôi là thêm max_fails = 0 vào cuối tên máy chủ

ngược dòng sm_url {máy chủ LOAD_BALANCER_DOMAIN_NAME: max_fails = 0; }


-3

Đổi tên ngược dòng thành "up_example.com" và thay đổi

proxy_pass  http://$server_name/$uri;

proxy_pass  http://up_$server_name$uri;

Trong khi độc đáo, tôi thấy không có vấn đề kỹ thuật với việc sử dụng $server_name. Nếu đây là vấn đề, tôi nghĩ anh ấy sẽ có vấn đề / tất cả / thời gian, không chỉ đôi khi như báo cáo.
Mark Stosberg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.