0

Install nginx forward proxy di Ubuntu 20.04

Sebenarnya saya sudah buat tutorial nginx forward proxy, cuma itu di OS redhat (EC2 AMI di cloud AWS). Untuk ditutorial ini kita akan coba menginstallnya di OS ubuntu 22.04.

Cara installnya sebagian besar sama dengan ditutorial sebelumnya, cuma penamaan packagenya saja yang berbeda pada saat instalasi. Kalau di redhat pakai yum install, disini kita akan pakai apt-get install.

nginx forward proxy in AWS Cloud

Prerequisite:

  • EC2 Ubuntu 20.04 (cloud AWS)
  • nginx 1.22.1
  • ngx_http_proxy_connect_module


Ringkasan step:

  1. Masuk ke server Ubuntu dan login sebagai root
  2. Download nginx 1.22.1 dari sini
  3. Download ngx_http_proxy_connect_module dari github
  4. Patching nginx
  5. Install dependencies untuk ngx_http_proxy_connect_module
  6. Buat user dan group: www
  7. Install nginx secara manual
  8. Konfigurasi Forward Proxy
  9. Test Forward Proxy

Masuk ke server EC2 Ubuntu 20.04 dan login sebagai root

  • Silahkan masuk ke server Ubuntu menggunakan ssh, bisa menggunakan ssh <user>@<ip>
  • Login sebagai root, gunakan command sudo su
  • Saya arahkan ke folder /home/ubuntu/nginx_forward_proxy untuk area kerja saya. Jika folder tersebut belum ada bisa dibuat dulu.

Download nginx 1.22.1

Download nginx 1.22.1 menggunakan wget diterminal:

# wget http://nginx.org/download/nginx-1.22.1.tar.gz

Lalu extract filenya

# tar -xzvf nginx-1.22.1.tar.gz

Nanti kita akan mengkonfigurasi nginx dan menginstallnya.

Download ngx_http_proxy_connect_module dari github

Untuk mendownload module ngx_http_proxy_connect_module kita perlu git. Jadi install gitnya terlebih dahulu dengan:

# apt-get install git

Setelah itu kita download module ngx_http_proxy_connect_module dari git

# git clone https://github.com/chobits/ngx_http_proxy_connect_module.git

Patching nginx

Sesuai step dari https://github.com/chobits/ngx_http_proxy_connect_module#select-patch kita harus mem-patching nginxnya menggunakan file proxy_connect yang sudah disediakan dalam folder ngx_http_proxy_connect_module.

Supaya lebih mudah saya copas table proxy_connect nya ke sini:

nginx forward proxy

Karena kita menggunakan nginx versi 1.22.1 maka kita gunakan proxy_connect_rewrite_102101.patch

Untuk mempatch nginx, kita harus install dulu patchnya:

# apt-get install patch 
# patch --version

Kemudian kita lakukan patching ke nginx:

# cd nginx-1.22.1
# patch -p1 < /home/ubuntu/nginx_forward_proxy/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_102101.patch

Install dependencies untuk ngx_http_proxy_connect_module

Module ngx_http_proxy_connect_module memerlukan beberapa dependensi, jadi kita harus install dulu dependensinya:

# apt-get install gcc
# apt-get install libpcre3-dev
# apt-get install libssl-dev
# apt-get install zlib1g-dev

Buat user dan group: www

Nantinya nginx akan menggunakan user www. Jadi kita harus buat dulu user dan groupnya:

# groupadd www
# useradd -g www www

Install nginx secara manual

Kita akan install nginxnya secara manual dari source yang sudah kita download diawal tadi. Step untuk menginstallnya:

  • setup konfigurasi nginx
  • install nginx

Setup konfigurasi nginx

# cd nginx-1.22.1

Jalankan command berikut untuk mengeset konfigurasi nginx:

# ./configure --user=www --group=www --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-threads --sbin-path=/usr/sbin/nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --add-module=/home/ubuntu/nginx_forward_proxy/ngx_http_proxy_connect_module

Penjelasan:

  • ./configure file shellscript didalam folder nginx-1.22.1 untuk menkonfigurasikan nginx sesuai parameter yang kita set
  • --user=www --group=www kita gunakan user www untuk nginx (bukan user root)
  • --prefix=/etc/nginx path mau dimana nginx diinstall
  • --conf-path=/etc/nginx/nginx.conf path konfigurasi nginx
  • --with-http_ssl_module install module ssl
  • --with-http_stub_status_module install module stub status
  • --with-http_realip_module install module realip
  • --sbin-path=/usr/sbin/nginx file binary nginx
  • --error-log-path=/var/log/nginx/error.log path log error nginx
  • --http-log-path=/var/log/nginx/access.log path log access nginx
  • --pid-path=/run/nginx.pid process ID nginx disimpan di path ini
  • --add-module=/home/ubuntu/nginx_forward_proxy/ngx_http_proxy_connect_module, ini yang paling penting, tambahkan module ngx_http_proxy_connect_module ke dalam nginx

Hasil dari ./configure adalah seperti ini:

nginx forward proxy

Install nginx

Masih didalam folder nginx-1.22.1 jalankan command berikut untuk menginstall nginx:

# make & make install

Jika berhasil maka outputnya seperti ini:

nginx forward proxy

Cek nginx sudah terinstall:

# /usr/sbin/nginx -V

Buat systemd untuk membuat service nginx

# vi /lib/systemd/system/nginx.service

masukkan script berikut ke dalam nginx.service

[Unit]
Description=Nginx Custom From Source
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

reload daemon systemd agar file nginx.service bisa terbaca

# systemctl daemon-reload

Enablekan dan jalankan nginx:

# systemctl enable nginx
# systemctl start nginx

Cek status nginx, jika sudah berhasil dijalankan maka akan seperti ini tampilannya:

# systemctl status nginx

Konfigurasi Forward Proxy & Test Proxy

Untuk konfigurasi & test proxy bisa dilanjut ke link dibawah ya (karena saya sudah buat tutorial sebelumnya).

Note: Path nginx yang dikonfigurasikan:

# vi /etc/nginx/nginx.conf

Ambar Hasbiyatmoko

Hello, I'm web developer. Passionate about programming, web server, and networking.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.