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
.
Prerequisite:
- EC2 Ubuntu 20.04 (cloud AWS)
- nginx 1.22.1
- ngx_http_proxy_connect_module
Ringkasan step:
- Masuk ke server Ubuntu dan login sebagai root
- Download nginx 1.22.1 dari sini
- Download ngx_http_proxy_connect_module dari github
- Patching nginx
- Install dependencies untuk ngx_http_proxy_connect_module
- Buat user dan group: www
- Install nginx secara manual
- Konfigurasi Forward Proxy
- 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:
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:
Install nginx
Masih didalam folder nginx-1.22.1 jalankan command berikut untuk menginstall nginx:
# make & make install
Jika berhasil maka outputnya seperti ini:
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