[Tutorial] Nginx dual-stack (IPv4 dan IPv6)

Discussion in 'VPS (Virtual Private Server)' started by Momon, 24 May 2014.

Thread Status:
Not open for further replies.
  1. Momon

    Momon Beginner 2.0

    Messages:
    36
    Likes Received:
    2
    Trophy Points:
    8
    Tutorial sederhana, semoga berguna. Dapat jatah IPv6 dari provider tapi gak dipake :)

    Sebagai pembuka, tutorial ini bertujuan agar nama domain (virtualhost level, bukan default_server) bisa diakses melalui IPv4 (shared) dan IPv6 (dedicated). Ada yg bilang juga dg dedicated IPv6 (untuk mengakali IPv4 yg kadang agak sulit mendapatkannya) bagus buat SEO. Tapi saya kurang tau juga, silahkan dibuktikan :)

    Sebelumnya, di tutorial ini saya menggunakan debian. Distro lain silahkan menyesuaikan.

    Pertama, kita cek apakah instalasi nginx kita support IPv6 dg perintah:
    Dari output perintah tadi, kemudian kita cari text seperti ini:
    Kalo ada bisa lanjut ke step berikutnya. Kalo gak ada berarti kita harus compile lagi nginx biar support IPv6 (bisa cari di internet).

    Kedua, kita edit nama domain config kita. Bisa diganti atau ditambah dengan:
    Ketiga, kita restart nginx
    Keempat, kita tambahkan AAAA record pada domain kita dengan IPv6 tadi.

    Terakhir, kita cek apa semuanya udah mulus
    Kalo muncul tampilan yg sama (mirip) halaman web kita, berarti semuanya udah mulus. Kalo beda berarti ada yg salah :)

    Semoga berguna :)
     
  2. erawanarifn

    erawanarifn Apprentice 1.0

    Messages:
    379
    Likes Received:
    47
    Trophy Points:
    28
    Tutorial yang bagus :)

    Tadi untuk satu domain di dalam satu server, dulu saya pakai seperti itu untuk hosting satu domain. Jadi request ke IPv6 utama akan membuka domain tersebut.

    Nah misalnya di satu server mau dipakai untuk host banyak domain, tinggal ditambahkan konfigurasi seperti ini, misalnya /etc/nginx/hosts.d/domain.conf:

    Code:
    server {
        listen 80;
        listen [::]:80;
        server_name erawanarifnugroho.com;
        rewrite ^/(.*) http://www.erawanarifnugroho.com/$1 permanent;
    }
    
    server {
        listen 80;
        listen [::]:80;
        server_name www.erawanarifnugroho.com;
    
        access_log off;
        error_log /home/http/logs/erawanarifnugroho.com.log;
        index index.html index.php;
        root /home/http/hosts/erawanarifnugroho.com;
    
    }
    
    Sedangkan untuk /etc/nginx/hosts.d/default.conf adalah seperti berikut :
    Code:
    server {
        listen 80 default_server;
        listen [::]:80 default ipv6only=on;
        server_name localhost;
    
        access_log off;
        error_log /var/log/nginx/error.log;
        index index.html index.php;
        root /usr/share/nginx/html;
    
        include /etc/nginx/conf.d/cache.conf;
        include /etc/nginx/conf.d/deny.conf;
        include /etc/nginx/php.d/www-data.conf;
    }
    
     
  3. Momon

    Momon Beginner 2.0

    Messages:
    36
    Likes Received:
    2
    Trophy Points:
    8
    Makasih pak :)

    Memang tutorial yg ada di internet seperti yg bapak tulis. Tapi saya sudah menggunakan rule persis diatas 2 kali tapi gagal. Beberapa menit lalu saya coba lagi untuk memastikan dan ternyata masih gagal.

    Gagalnya kenapa? Ketika saya tes menggunakan
    yg muncul adalah halaman web default_server, bukan halaman web nama domain.
     
  4. erawanarifn

    erawanarifn Apprentice 1.0

    Messages:
    379
    Likes Received:
    47
    Trophy Points:
    28
    Kalau yang muncul adalah halaman default, berarti yang terbaca sama Nginx adalah konfigurasi yang ini :

    Code:
    listen [::]:80 default ipv6only=on;
    Sudah coba restart Nginx dan Php?
     
  5. Momon

    Momon Beginner 2.0

    Messages:
    36
    Likes Received:
    2
    Trophy Points:
    8
    Sudah pak. Mungkin bapak bisa konfirmasi config yg bapak kasih diatas work? Jujur saya masih penasaran kenapa config diatas saya ikuti gak work.
     
  6. erawanarifn

    erawanarifn Apprentice 1.0

    Messages:
    379
    Likes Received:
    47
    Trophy Points:
    28
    Konfigurasi diatas adalah konfigurasi yang saya pakai untuk blog saya. Kalau langsung diakses IPv6nya, akan muncul halaman default Nginx, tapi kalau situs saya diakses pakai IPv6 akan muncul blog saya. Semua VPS yang saya pakai sudah support IPv6, dan semua situs yang saya punya, sudah punya record AAAA juga :)

    Bisa coba akses ke alamat IPv6 ini?
    Code:
    http://[2a00:dcc0:eda:98:183:193:6ba4:b31f]
    Dan bandingkan jika membuka blog saya, www.erawanarifnugroho.com
     
  7. Momon

    Momon Beginner 2.0

    Messages:
    36
    Likes Received:
    2
    Trophy Points:
    8
    aneh ya. bisa gk pak kasih output dari command ini
     
  8. erawanarifn

    erawanarifn Apprentice 1.0

    Messages:
    379
    Likes Received:
    47
    Trophy Points:
    28
    Ini contohnya

    Code:
    ~# ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:16:3e:c8:30:21
              inet addr:193.183.xxx.xxx  Bcast:193.183.xxx.xxx  Mask:255.255.254.0
              inet6 addr: 2a00:dcc0:eda:98:183:193:6ba4:b31f/64 Scope:Global
              inet6 addr: 2a00:dcc0:eda:98:183:193:9e7f:b90b/128 Scope:Global
              inet6 addr: fe80::216:3eff:fec8:3021/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:732155642 errors:0 dropped:0 overruns:0 frame:0
              TX packets:100772570 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:2673469080 (2.4 GiB)  TX bytes:1348083237 (1.2 GiB)
              Interrupt:12
    
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:43030206 errors:0 dropped:0 overruns:0 frame:0
              TX packets:43030206 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:2968867445 (2.7 GiB)  TX bytes:2968867445 (2.7 GiB)
    
     
  9. Momon

    Momon Beginner 2.0

    Messages:
    36
    Likes Received:
    2
    Trophy Points:
    8
    Dari 2 IPv6 diatas semuanya redirect 301 ke www.erawanarifnugroho.com. Mungkin ada spesial rule yg mas gunakan? Saya udah dig domain mas dan cuma punya 1 AAAA record. Menarik bagaimana nginx menentukan doc root dari kedua IPv6 diatas?
     
  10. erawanarifn

    erawanarifn Apprentice 1.0

    Messages:
    379
    Likes Received:
    47
    Trophy Points:
    28
    Ya itu mas, itu semua contoh konfigurasi untuk Nginx saya :

    Code:
    /etc/nginx/hosts.d/domain.conf
    /etc/nginx/hosts.d/default.conf
    Saya bisa host banyak domain di dalam satu vps memakai Nginx dan IPv4/IPv6. Karena semua request yang dihandle oleh Nginx akan diarahkan sesuai file konfigurasi tadi.

    Misalnya satu website mempergunakan 1 IPv6, tinggal diset saja AAAA Domain ke masing-masing IPv6.
    Code:
    2a00:dcc0:eda:98:183:193:6ba4:b31f www.domaina.com
    2a00:dcc0:eda:98:183:193:6ba4:baaa www.domainb.com
    Begitu Nginx menerima request, semuanya akan diarahkan ke halaman root masing-masing websitenya.
    Misalnya pengunjung mengakses IPv6nya secara langsung, maka hanya akan saya tampilkan halaman default Nginx memakai konfigurasi ini :
    Code:
    server {
        listen 80 default_server;
        listen [::]:80 default ipv6only=on;
        server_name localhost;
    
        index index.html index.php;
        root /usr/share/nginx/html;
    
    }
    Tapi begitu requestnya melalui domain, maka Nginx akan membaca konfigurasi ini misalnya :
    Code:
    server {
        listen 80;
        listen [::]:80;
        server_name erawanarifnugroho.com;
        rewrite ^/(.*) http://www.erawanarifnugroho.com/$1 permanent;
    }
    
    server {
        listen 80;
        listen [::]:80;
        server_name www.erawanarifnugroho.com;
    
        access_log off;
        error_log /home/http/logs/erawanarifnugroho.com.log;
        index index.html index.php;
        root /home/http/hosts/erawanarifnugroho.com;
    
    }
    Perbedaannya disini :
    Code:
    listen 80 default_server;
        listen [::]:80 default ipv6only=on;
        server_name localhost;
    ...
    
    listen 80;
        listen [::]:80;
        server_name erawanarifnugroho.com;
    
     
Loading...
Thread Status:
Not open for further replies.

Share This Page

Loading...