Menggunakan Nginx sebagai Proxy untuk Aplikasi Web Flask
Berikut ini contoh nginx.conf untuk aplikasi Flask saya:
Dengan "hanya" menggunakan modal ini, Anda sudah dapat membuat aplikasi web Anda live, misal dengan menggunakan gunicorn:
Menggunakan konfigurasi di atas, berarti kita menggunakan nginx sebagai proxy, hal ini berarti jika kita ingin mendapatkan IP Host server, maka yang muncul adalah
Untuk mendapatkan IP server "asli", kita perlu menambahkan baris di nginx config di atas:
Dengan begitu, kita dapat mendapatkan IP asli host di Flask dengan:
Ada juga kita ingin mendapatkan IP asli dari visitor, karena aplikasi kita di belakang proxy, maka ketika kita hanya akan mendapat IP 127.0.0.1 juga. Bagaimana kita mendapatkan real IP visitor?
Tambahkan baris berikut di nginx conf kita,
Sehingga ketika kita ingin mendapatkan real IP visitor, kita dapat menggunakan:
atau
Sehingga, secara utuh, konfigurasi nginx.conf kita menjadi:
Demikian, sekelumit ilmu kecil tentang penerapan nginx sebagai proxy untuk aplikasi web Flask kita. Semoga bermanfaat...
server {
listen 80;
server_name ip_address;
location / {
proxy_pass http://127.0.0.1:8000;
}
}
Dengan "hanya" menggunakan modal ini, Anda sudah dapat membuat aplikasi web Anda live, misal dengan menggunakan gunicorn:
gunicorn app.views:app -b 127.0.0.1:8000
Menggunakan konfigurasi di atas, berarti kita menggunakan nginx sebagai proxy, hal ini berarti jika kita ingin mendapatkan IP Host server, maka yang muncul adalah
127.0.0.1
Untuk mendapatkan IP server "asli", kita perlu menambahkan baris di nginx config di atas:
proxy_set_header Host $host;
Dengan begitu, kita dapat mendapatkan IP asli host di Flask dengan:
request.headers.get("Host")
Ada juga kita ingin mendapatkan IP asli dari visitor, karena aplikasi kita di belakang proxy, maka ketika kita hanya akan mendapat IP 127.0.0.1 juga. Bagaimana kita mendapatkan real IP visitor?
Tambahkan baris berikut di nginx conf kita,
proxy_set_header HTTP_X_REAL_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
Sehingga ketika kita ingin mendapatkan real IP visitor, kita dapat menggunakan:
request.headers.get("HTTP_X_REAL_IP")
atau
request.headers.get("X-Forwarded-For")
Sehingga, secara utuh, konfigurasi nginx.conf kita menjadi:
server {
listen 80;
server_name ip_address;
location {
proxy_set_header Host $host;
proxy_set_header HTTP_X_REAL_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:8000;
}
}
Demikian, sekelumit ilmu kecil tentang penerapan nginx sebagai proxy untuk aplikasi web Flask kita. Semoga bermanfaat...
[…] Menggunakan Nginx sebagai Proxy untuk Aplikasi Web Flask […]
ReplyDelete