Vì vậy, tôi có một thiết lập đơn giản với nginx cho phương tiện truyền thông tĩnh và cân bằng tải và lốc xoáy như máy chủ web cho django (4 máy chủ đang chạy). Vấn đề của tôi là REMOTE_ADDR không nhận được thông qua vào django vì vậy tôi nhận được một KeyError:REMOTE_ADDR không nhận được gửi đến Django sử dụng nginx & tornado
article.ip = request.META['REMOTE_ADDR']
Địa chỉ từ xa là nhận được gửi qua như nhờ vào sự nginx.conf X-Real-IP (HTTP_X_REAL_IP):
location/{
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect false;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://frontends;
}
Vì HTTP được thêm vào khóa META Tôi không thể chỉ thực hiện proxy_set_header remote_addr $ remote_addr. Những gì tôi có thể làm là đọc X-Real-IP nếu không tìm thấy khóa addr từ xa nhưng tôi tò mò nếu có giải pháp thông minh hơn.
Cảm ơn!
Không có giải pháp đúng, nhưng tôi đã thêm một middleware django mà quay HTTP_X_REAL_IP vào REMOTE_ADDR. – Nixarn
Các báo cáo này sẽ giúp bạn: proxy_redirect off; proxy_set_header X-Real-IP $ remote_addr; \t \t proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; \t \t proxy_set_header X-Đề án $ scheme; – glarrain