2016-03-28 19 views
8

Nginx hỗ trợ cú pháp allowdeny để hạn chế IP, ví dụ: allow 192.168.1.1;. Nhưng nếu lưu lượng truy cập đi qua proxy ngược, IP sẽ tham chiếu đến IP của proxy. Vậy làm thế nào nó có thể được cấu hình để đưa vào danh sách trắng một IP gốc cụ thể và từ chối tất cả các yêu cầu gửi đến khác?Nginx - Cho phép xuất xứ IP

Trả lời

10

remote_addr sẽ tham chiếu đến proxy, nhưng bạn có thể định cấu hình proxy để gửi địa chỉ ứng dụng khách với trường tiêu đề X-Real-IP/X-Forwarded-For.

Kết hợp với mô-đun ngx_http_realip, bạn có thể sửa đổi tiêu đề đến để sử dụng địa chỉ máy khách thực cho remote_addr. Tôi tin rằng điều này sẽ làm việc như mong đợi với cú pháp cho phép/từ chối.

Chỉ cần làm rõ - cú pháp cho phép/từ chối phải giống hệt nhau sau khi bật và định cấu hình mô-đun. Thay thế địa chỉ IP và địa chỉ proxy của bạn bên dưới.

nginx Back-end cho phép/từ chối:

location/{ 
    allow <your ip>; 
    allow 127.0.0.1; 
    deny all; 
} 

Back-end cấu hình nginx realip:

set_real_ip_from <your proxy>; 
real_ip_header X-Forwarded-For; 

Mở nginx cấu hình proxy của bạn:

proxy_set_header  X-Real-IP  $remote_addr; 
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 

Nếu bạn có nhiều proxy trung gian có liên quan, bạn cần bật các địa chỉ bổ sung real_ip_recursive và danh sách trắng h chỉ thị set_real_ip_from.

+0

Cảm ơn - bạn có thể hiển thị cách cấu hình sẽ tìm kiếm điều này, vì trang mô-đun chỉ hiển thị cách nhận biến nhưng không hiển thị cách đưa vào danh sách cho phép. – mahemoff

+0

Tôi thấy, nó thay thế IP proxy bằng IP gốc. Cảm ơn. – mahemoff

+1

Có. Xin lỗi vì sự lộn xộn của một bình luận. Đã cập nhật bài đăng gốc của tôi. – ngraves

Các vấn đề liên quan