Điểm:3

nginx từ chối tất cả các yêu cầu đối với máy chủ ảo. yêu cầu đến từ một giao nhận tcp nginx

lá cờ gb

Tóm tắt - cần thêm ip danh sách trắng vào mysite1.example.com. bây giờ khi chúng được thêm vào, nó không hoạt động vì mọi yêu cầu đến đều bắt nguồn từ máy chủ cân bằng tải.

Tôi đang làm việc trên một thiết lập với máy chủ Nginx ở phía trước với phụ trợ ngược dòng để cân bằng tải tất cả các gói tcp trên cổng 443 đến máy chủ phụ trợ.

Cấu hình nginx của Loadbalancer server chạy nginx - server C như sau

dòng {
        ngược dòng stream_backend {
                hàm băm $remote_addr nhất quán;
                máy chủ 10.15.15.3:443; ## máy chủ A
                máy chủ 10.15.15.9:443; ## máy chủ B
        }


        người phục vụ {
                nghe 443;
                proxy_pass stream_backend;
                proxy_timeout 5s;
                proxy_connect_timeout 5s;
        }
}

máy chủ A và máy chủ B có nginx.conf bên dưới. chúng là những máy chủ giống hệt nhau với các ứng dụng.

nó có hai máy chủ ảo đang chạy trong mỗi máy chủ. họ đang làm việc tốt.

http {

    người phục vụ {
        server_name mysite1.example.com;
        nghe *:443 ssl;
        nghe [::]:443 ssl;
        
        cho phép 123.45.85.220; # điều này dường như không hoạt động
        Phủ nhận tất cả; # chỉ điều này đang làm việc

        
        vị trí ^~ /static/ {
            ...
        }
        ...
        
        ssl_certificate file.pem;
        ssl_certificate_key file.key;
    }


    người phục vụ {
        server_name mysite2.example.com;
        nghe *:443 ssl;
        nghe [::]:443 ssl;
        
        
        địa điểm / cái gì đó {
            ...
        }
        địa điểm /cái gì2{
            ...
        }
        
        ssl_certificate file.pem;
        ssl_certificate_key file.key;
    }
}

điều tôi cần là chỉ đưa một số ip vào danh sách trắng cho máy chủ ảo mysite1.example.com. vấn đề tôi gặp phải là nginx chạy trên Máy chủ A và B xem Ip của bộ cân bằng tải là Ip của máy khách. vì vậy khi thử thêm allow IP; Phủ nhận tất cả. không hoạt động đối với bất kỳ máy chủ nào vì nó có IP cân bằng tải trên tất cả các yêu cầu dưới dạng IP máy khách.

Ai đó có thể hướng dẫn tôi cách thêm cấu hình IP proxy để thiết lập được đề cập ở trên hoạt động tốt không. Thiết lập hoàn tất ngoại trừ vấn đề về danh sách trắng IP.

p.s Việc chấm dứt SSl xảy ra tại các máy chủ phụ trợ, máy chủ A và Máy chủ B

Tôi đã tìm kiếm trên web và thấy những điều này hữu ích nhưng vẫn không thể tìm ra cách để tất cả hoạt động.

https://stackoverflow.com/questions/40873393/nginx-real-client-ip-to-tcp-stream-backend https://www.cyberciti.biz/faq/nginx-redirect-backend-traffic-based-upon-client-ip-address/

djdomi avatar
lá cờ za
Thực sự rất khó để hiểu yêu cầu ban đầu - có thể chính xác hơn và định dạng Câu hỏi của bạn để dễ đọc hơn không?
lá cờ gb
đã thêm phần tóm tắt và nhận xét về cấu hình. cần tìm cách đưa các ip vào danh sách trắng và từ chối tất cả các ip khác trong mysite.example.com
djdomi avatar
lá cờ za
cách dễ nhất để hạn chế quyền truy cập là sử dụng cho phép và từ chối, nhưng theo thứ tự trước tiên từ chối và sau đó cho phép
Điểm:5
lá cờ cz

Điều này xảy ra do bộ cân bằng tải nginx của bạn tạo một kết nối TCP mới tới các máy chủ web nginx của bạn, khiến địa chỉ IP máy khách ban đầu bị mất.

Bạn có thể giải quyết vấn đề này bằng giao thức PROXY. Giao thức này gửi thông tin địa chỉ IP ban đầu khi kết nối mới được mở để máy chủ web của bạn có thể nhận biết được.

Để thiết lập nó, bạn cần thực hiện các thay đổi sau:

  • Trên bộ cân bằng tải, đặt proxy_protocol bật;:

    dòng {
        người phục vụ {
            proxy_pass ở đâu đó;
            proxy_protocol bật;
    
  • Trên máy chủ web, chấp nhận giao thức PROXY và bật chức năng Real IP cho địa chỉ IP của bộ cân bằng tải.

    người phục vụ {
        nghe 443 ssl http2 proxy_protocol;
        nghe [::]:443 ssl http2 proxy_protocol;
        real_ip_header proxy_protocol;
        set_real_ip_from <IP của bộ cân bằng tải>;
    

Có những chỉnh sửa bổ sung mà bạn có thể thực hiện đối với giao thức PROXY mà bạn có thể tìm thấy trong tài liệu nginx nhưng điều này sẽ giúp bạn bắt đầu và giải quyết vấn đề trước mắt.

Điểm:4
lá cờ tz

Cách tiếp cận của tôi sẽ là:

Lọc trong bộ cân bằng tải bằng SNI:

Về cơ bản: SNI cho phép proxy xem tên miền mà không cần chấm dứt TLS. Đây là một hướng dẫn. Và đây là tài liệu nginx để kết hợp nó thành một giải pháp. Nếu bạn có thể làm điều này, thì bạn có thể từ chối dựa trên $ssl_preread_server_name.

nếu ( $ssl_preread_server_name ~* mysite1.example.com && $remote_addr !~* <whitelisted_ip> ) {
           trả lại 404;

Mô-đun real_ip cũng có vẻ là một giải pháp tốt.

Chỉnh sửa

Các giao thức PROXY thực sự sẽ tốt hơn real_ip. Nhưng điều này vẫn có nghĩa là các máy chủ phụ trợ của bạn bị tấn công bởi các yêu cầu mà cuối cùng chúng sẽ chặn. Giải pháp SNI bắt chúng tại bộ cân bằng tải.

lá cờ co
Chuyển tiếp trên SNI không đáng tin cậy vì các trình duyệt đang hỗ trợ các phần mở rộng ESNI và ECH
Điểm:0
lá cờ in

có vẻ như proxy của bạn không vượt qua IP thực cố gắng thêm tham số này

proxy_set_header X-Real-IP $remote_addr;

bạn có thể kiểm tra nhật ký truy cập ip nào ở đó không?

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