Reverse Proxy Aplikasi Node.js dengan Nginx

nodejs

Reverse Proxy Aplikasi Node.js dengan Nginx, Nginx merupakan sebuah webserver yang multi fungsi, bahkan dapat digunakan sebagai reverse proxy tanpa harus menambah atau mengaktifkan modul apapun.

Bagi Anda yang telah men-deploy aplikasi Node.js-nya ke server, Anda disarankan untuk tidak mengarahkan langsung request pengguna ke Aplikasi Node.js. Selain kurang aman dan reliable, mengarahkan langsung juga membuat aplkasinya tidak dapat menggunakan beberapa fitur yang biasanya dimiliki oleh sebuah web server.

Artikel ini merupakan lanjutan dari artikel Cara Deploy Aplikasi Node.js ke VPS, di sini kita akan mencoba untuk membuat sebuah reverse proxy yang akan berjalan di depan aplikasi Node.js.

Bagaimana cara menjadikan Nginx sebagai reverse proxy? Berikut caranya.

Prasyarat

Pastikan Anda telah memasang Nginx di server Anda, jika belum, Anda bisa mengikuti tutorial berikut.

Jika telah terpasang, Anda bisa lanjut ke tahap Selanjutnya.

Konfigurasi Nginx sebagai reverse proxy

Pertama, silakan buat konfigurasi baru di direktori conf.d dengan nama apapun, dan diakhiri dengan ekstensi .conf.

$ sudo vim /etc/nginx/conf.d/nothinux.conf

Selanjutnya, tambahkan konfigurasi berikut.

server {
    listen       80;
    server_name  nothinux.id;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Silakan sesuaikan bagian server_name dengan nama domain, dan proxy_pass dengan alamat dari aplikasi Node.js Anda, karena Aplikasi saya berjalan di server yang sama, dan berjalan pada port 3000, jadi saya menggunakan http://127.0.0.1:3000.

Jika sudah, Anda tinggal me-restart service nginx.

$ sudo systemctl restart nginx

Setelah itu, Anda sudah dapat mengakses aplikasi Node.js Anda di port 80. Anda tinggal mengakses http://nama-domain di web browser.

Konfigurasi Nginx sebagai reverse proxy dengan SSL

Lalu bagaimana caranya agar dapat diakses melalui https? Tenang, hal tersebut dapat kita lakukan. Silakan ubah konfigurasinya menjadi seperti berikut.

server {
    listen 80;
    server_name nothinux.id;
    return 301 $scheme://nothinux.id$request_uri;
}

server {
    listen 443 ssl;
    server_name nothinux.id;

    ssl_certificate     /etc/nginx/nothinux-ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/nothinux-ssl/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
    }
}

Pada konfigurasi di atas, kita menambahkan listen 443 ssl, untuk menjalankan nginx di port 443 untuk melayani semua permintaan https. Lalu ssl_certificate diarahkan ke lokasi di mana sertifikat ssl disimpan, sedangkan ssl_Certificate_key diarahkan ke lokasi di mana private key-nya disimpan.

Konfigurasi location / juga dipindahkan ke direktif https, karena nantinya aplikasi Node.js akan di-host di https.

Terakhir mengaktifkan redirect 301 untuk mengalihkan semua permintaan http dari port 80 ke https port 443.

Jika sudah, Anda tinggal me-restart service nginx dengan perintah di bawah.

$ sudo systemctl restart nginx

Itulah tutorial Reverse Proxy Aplikasi Node.js dengan Nginx. Selain Nginx, Anda juga dapat menjadikan Apache sebagai reverse proxy.

Semoga bermanfaat.

0 Komentar

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *