Reverse Proxy Nginx SSL Cloudflare di Ubuntu 24.04
Reverse Proxy Nginx SSL Cloudflare di Ubuntu 24.04

Setup Reverse Proxy Nginx + SSL Cloudflare di Ubuntu 24.04 LTS

Menggabungkan Reverse Proxy Nginx, SSL dari Cloudflare, dan sistem Ubuntu 24.04 LTS adalah solusi handal untuk mengamankan dan mengoptimalkan distribusi lalu lintas aplikasi web.

Artikel ini akan memandu langkah demi langkah menyiapkan Reverse Proxy menggunakan Nginx, mengaktifkan SSL penuh (Full/Strict) melalui Cloudflare, serta memastikan server backend tetap aman.

Topologi Reverse Proxy Nginx + SSL Cloudflare
Topologi Reverse Proxy Nginx + SSL Cloudflare

Perbarui Sistem

Jalankan perintah dibawah untuk memperbarui repository dan upgrade package terbaru.

sudo apt update -y && sudo apt upgrade -y

Install Nginx

Install web server nginx dengan menjalankan perintah dibawah.

sudo apt install nginx -y

Management Service Nginx

Nginx akan otomatis berjalan setelah instalasi selesai. Kamu dapat mengelolanya dengan perintah systemctl:

  • Menjalankan service nginx saat sistem operasi direstart.
sudo systemctl enable nginx
  • Menjalankan service nginx.
sudo systemctl start nginx
  • Menghentikan atau mematikan service nginx.
sudo systemctl stop nginx
  • Melihat status service nginx.
sudo systemctl status nginx

Konfigurasi SSL di Nginx

Generate dhparam

dhparam berfungsi untuk menghasilkan dan mengatur parameter Diffie-Hellman (DH).

Parameter ini sangat penting dalam enkripsi TLS/SSL untuk mengaktifkan Perfect Forward Secrecy (PFS), yang memastikan kunci enkripsi unik untuk setiap sesi sehingga komunikasi web server dan klien tetap aman.

sudo openssl dhparam -out /etc/ssl/dhparam.pem 2048

Membuat file options-ssl-nginx

Isi file ini kumpulan parameter dan standar keamanan SSL/TLS.

File ini berfungsi untuk memastikan enkripsi HTTPS pada web server NGINX berjalan dengan aman, cepat, dan mematuhi standar industri modern.

sudo nano /etc/ssl/options-ssl-nginx.conf

Masukkan konfigurasi berikut.

ssl_session_cache shared:nginx_SSL:10m;
ssl_session_timeout 1440m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;

ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSAAES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHERSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHERSA-AES128-SHA";

ssl_dhparam /etc/ssl/dhparam.pem;

Membuat server block domain

sudo nano /etc/nginx/sites-available/DOMAIN-KAMU.conf

Masukan konfigurasi dibawah.

server {
    listen 443 ssl;
    server_name DOMAIN-KAMU www.DOMAIN-KAMU;

    ssl_certificate /etc/ssl/DOMAIN-KAMU/DOMAIN-KAMU-cert.pem;
    ssl_certificate_key /etc/ssl/DOMAIN-KAMU/DOMAIN-KAMU-key.pem;
    include /etc/ssl/options-ssl-nginx.conf;


    location / {
        proxy_pass http://127.0.0.1:PORT-NUMBER-APLIKASI-KAMU;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

        access_log /var/log/nginx/DOMAIN-KAMU_access.log;
        error_log /var/log/nginx/DOMAIN-KAMU_error.log;

}

server {
    listen 80;
    server_name DOMAIN-KAMU www.DOMAIN-KAMU;

    return 301 https://$host$request_uri;
}

Membuat symbolic link konfigurasi server blok reverse proxy ke direktori sites-enabled.

sudo ln -s /etc/nginx/sites-available/DOMAIN-KAMU.conf /etc/nginx/sites-enabled/

Konfigurasi SSL Cloudflare

Pastikan domain yang kamu sewa sudah menggunakan nameserver dari cloudflare, sudah membuat dns record  A (domain ke IP_Public Server) dan CNAME (www ke domain) dengan Proxy Status (Proxied).

Membuat direktori untuk menyimpan file SSL di server.

sudo mkdir /etc/ssl/DOMAIN-KAMU

Masuk menu SSL/TLS -> Origin Server -> +Create Certificate akan muncul domain kamu, Private key type RSA (2048) dan Certificate Validity 1 years. Akan muncul Origin Certificate dan Private Key.

Salin private key lalu, pada server membuat file untuk menyimpan Private Key Cloudflare, lalu paste key

sudo nano /etc/ssl/DOMAIN-KAMU/DOMAIN-KAMU-key.pem

Lalu membuat file dengan nano, paste Origin Certificate.

sudo nano /etc/ssl/DOMAIN-KAMU/DOMAIN-KAMU-cert.pem

Tahap selanjutnya mengaktifkan SSL/TLS encryption. Masuk menu SSL/TLS -> Overview ubah Current encryption mode menjadi Full (strict).

Restart service nginx untuk memperbarui perubahan konfigurasi.

sudo systemctl restart nginx

Akses domain kamu yang sudah ada service yang berjalan yang berdasarkan port number.

Jika kamu memiliki aplikasi yang diakses mengunakan protocol http (80) atau https (443), cukup membedakan:

  1. Nama konfigurasi server block nginx (DOMAIN-KAMU.conf)
  2. Port number aplikasi di reverse proxy (proxy_pass http://127.0.0.1:PORT-NUMBER-APLIKASI-KAMU;)
  3. Domain (DOMAIN-KAMU)
  4. Certificate Origin dan Private Key, pada cloudflare berdasarkan domain.

Kesimpulan

Dengan mengikuti panduan di atas, kamu telah berhasil membangun Reverse Proxy Nginx + SSL Cloudflare di Ubuntu 24.04 LTS. Arsitektur ini memberikan:

  1. Enkripsi end-to-end antara client → Cloudflare → server.
  2. Kinerja tinggi dengan caching dan load balancing opsional dari Cloudflare.
  3. Keamanan tambahan dengan menyembunyikan IP asli server backend.

Kamu kini dapat menggunakannya untuk berbagai aplikasi.