Điểm:0

Phiên bản AWS EC2 phía sau AWS ELB không thể lấy địa chỉ IP của máy khách thực

lá cờ hm

Tôi rất mới với cài đặt nginx. Ứng dụng API của tôi chạy trong phiên bản EC2 do môi trường AWS Elastic Beanstalk của tôi tự động tạo. Ứng dụng sử dụng Nginx và phiên bản nằm sau bộ cân bằng tải ELB (cổ điển). Định tuyến tên miền 53 định tuyến lưu lượng đến ELB.

Tôi gửi gói từ Người đưa thư hoặc Người gửi gói đến miền đó, nhưng không bao giờ nhận được phản hồi. Sau khi kiểm tra nhật ký lỗi nginx, thấy rằng IP máy khách được hiển thị dưới dạng 10.0.2.63, chứ không phải địa chỉ IP của PC của tôi. Địa chỉ IP thực của tôi 149.15x.1xx.2xx. tôi đoán 10.0.2.63 là địa chỉ IP VPC. Dưới đây là nhật ký lỗi nginx.

trong khi đọc giao thức PROXY, máy khách: 10.0.2.63, máy chủ: 0.0.0.0:80

Theo hiểu biết của tôi, vì IP máy khách là địa chỉ IP VPC, phiên bản EC2 không thể gửi trả lời đến địa chỉ IP máy khách thực (địa chỉ IP PC của tôi), do đó, Postmand hoặc Người gửi gói nhận được phản hồi trống.

Tôi có hiểu đúng không? Làm cách nào tôi có thể để phiên bản EC2 nhận địa chỉ IP thực của máy khách? Giống như dưới đây:

trong khi đọc giao thức PROXY, máy khách: 149.15x.1xx.2xx, máy chủ: 0.0.0.0:80

Tôi không biết đó là sự cố với cài đặt AWS ELB hoặc cài đặt nginx.

Cấu hình nginx trong phiên bản EC2 của tôi là:

các tập tin:
/etc/nginx/conf.d/proxy.conf:
nội dung: |
  client_max_body_size 500M;
  server_names_hash_bucket_size 128;

  phụ trợ ngược dòng {
    máy chủ unix:///var/run/puma/my_app.sock;
  }

  người phục vụ {
    nghe 80 proxy_protocol;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    large_client_header_buffers 8 32k;

    set_real_ip_từ 10.0.0.0/8;
    real_ip_header X-Forwarded-For;

    địa điểm / {
      proxy_http_version 1.1;
      proxy_set_header X-Real-IP $proxy_protocol_addr;
      proxy_set_header X-Chuyển tiếp-Cho $proxy_protocol_addr;
      proxy_set_header Máy chủ $http_host;
      proxy_set_header X-NginX-Proxy true;
      proxy_buffers 8 32k;
      proxy_buffer_size 64k;
      proxy_pass http://phụ trợ;
      proxy_redirect tắt;

      # Cho phép hỗ trợ WebSocket
      vị trí /v1/cáp {
        proxy_pass http://phụ trợ;
        proxy_http_version 1.1;
        proxy_set_header Nâng cấp "websocket";
        proxy_set_header Kết nối "Nâng cấp";
        proxy_set_header X-Real-IP $proxy_protocol_addr;
        proxy_set_header X-Chuyển tiếp-Cho $proxy_protocol_addr;
      }
    }
  }
Điểm:1
lá cờ gp
Tim

Bạn lấy IP máy khách từ Tiêu đề X-Forwarded-For. Cái này Bài đăng trên blog AWS cung cấp cho bạn cấu hình cho nhật ký Apache và Nginx. Đây là Nginx

http {
  ...
  log_format chính '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
  access_log /var/log/nginx/access.log chính;
}

Tôi sử dụng CloudFlare trước máy chủ Nginx của mình. Đây là cách tôi thay thế IP CloudFlare bằng IP Máy khách thực tế.Bạn sẽ thay thế "CF-Connecting-IP" bằng "X-Forwarded-For" và thay thế IP CIDR thành CIDR của VPC của bạn.

set_real_ip_từ 173.245.48.0/20;
real_ip_header CF-Connecting-IP;
lei lei avatar
lá cờ hm
CIDR của VPC của tôi là 10.0.0.0/16. Tôi thay đổi cấu hình thành set_real_ip_từ 10.0.0.0/16; real_ip_header X-Forwarded-For; Nhưng trong nhật ký lỗi, vẫn thấy địa chỉ IP của máy khách không phải là địa chỉ IP thực. ...trong khi đọc giao thức PROXY, máy khách: 10.0.2.63, máy chủ: 0.0.0.0:80 Làm cách nào để hiển thị địa chỉ IP thực trong máy khách?
Tim avatar
lá cờ gp
Tim
Nếu điều đó không hiệu quả, tôi phải chơi với nó để giải quyết. Điều quan trọng của họ là lấy IP thích hợp từ các tiêu đề mà tôi đã mô tả ở trên, cách bạn thực hiện điều đó và nơi nó sẽ đến để bạn xem xét. Hy vọng rằng người khác có thể giúp đỡ, tôi không làm nhiều việc với Nginx nữa.

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