13 Sep 2018

Merubah http ke https pada WordPress setelah Reverse Proxy NGINX

Artikel kali ini akan membahas cara untuk merubah url http ke https pada website dengan cms wordpress. Agak tricky untuk mengkonfigurasinya. Untuk lebih paham saya buat topologi sederhananya seperti gambar di bawah ini:

Pada topologi di atas, User ingin mengakses url dengan nama https://hanangpriambodo.com. ketika diakses, router akan mengarahkan url tersebut ke server NGINX Reserve Proxy terlebih dahulu. Didalam server NGINX Reserve Proxy ini terdapat ssl hanangpriambodo.com. Jadi ssl hanangpriambodo.com tidak disimpan dalam server wordpress tapi disimpan di server NGINX Reserve Proxy. Permintaan User di tangani oleh server NGINX kemudian meminta informasi ke server wordpress hanangpriambodo yang sebenarnya menggunakan protokol http. informasi yang sudah di dapat oleh server NGINX di kirimkan kembali ke user menggunakan protokol https.

Ada beberapa langkah yang harus di konfigurasi pada server NGINX Reserve Proxy dan server WordPress. Langkah langkahnya sebagai berikut :

  1. Konfigurasi pada server NGINX Reserve Proxy di dalam file nginx.conf atau di file terpisah. seperti contoh script di bawah ini:
    server {

    listen 80;
    listen 443 ssl;
    server_name hanangpriambodo.com;

    ssl_certificate /etc/nginx/cert/hanangpriambodo_com.pem;
    ssl_certificate_key /etc/nginx/cert/hanangpriambodo_com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_cache shared:SSL:20m;
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 4h;
    ssl_buffer_size 1400;
    ssl_session_tickets on;
    client_max_body_size 20M;

    #FORCE HTTPS-REDIRECT
    if ($scheme = http) {

    return 301 https://$server_name$request_uri;

    }

    location / {

    proxy_pass http://192.168.1.4;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;

    }

    }

  2. Simpan kemudian restart service nginx
  3. Tambahan script di bawah ini pada file wp-config.php sebelum di baris /* That’s all, stop editing! Happy blogging. */

    if ($_SERVER[‘HTTP_X_FORWARDED_PROTO’] == ‘https’)
    $_SERVER[‘HTTPS’]=’on’;

    if (isset($_SERVER[‘HTTP_X_FORWARDED_HOST’])) {
    $_SERVER[‘HTTP_HOST’] = $_SERVER[‘HTTP_X_FORWARDED_HOST’];
    }
  4. Kemudian Simpan dan keluar, dan coba di akses browser anda.

 

Leave a Reply