Post

Devise always recorded remote_ip as 127.0.0.1

Problem

ใน Devise หลังจากเพิ่ม modules :trackable เข้าไปแล้ว ปรากฏว่า IP ที่ track ได้มักจะเป็น 127.0.0.1 ตลอด

Solution

เพิ่ม proxy_set_header HTTP_CLIENT_IP $remote_addr; ใน /etc/nginx/nginx.conf

1
2
3
4
5
6
7
8
location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header HTTP_CLIENT_IP $remote_addr;  # <-- add this line
    proxy_redirect off;
    proxy_pass http://unicorn;
}

เสร็จแล้ว restart nginx

Conclusion

เป็นปัญหาที่การ config nginx ไม่เกี่ยวอะไรกับ devise

References

This post is licensed under CC BY 4.0 by the author.