NGINX (diucapkan "engine x" ) adalah perangkat lunak server web sumber terbuka yang dirancang dengan mempertimbangkan konkurensi tinggi, yang dapat digunakan sebagai server HTTP/HTTPS , server proxy terbalik , server proxy email , perangkat lunak penyeimbang beban , Terminator TLS , server tembolok ...
Ini adalah perangkat lunak yang sangat modular. Bahkan beberapa bagian perangkat lunak yang tampaknya "terpasang", seperti GZIP atau SSL, sebenarnya dibuat sebagai modul yang dapat diaktifkan dan dinonaktifkan selama waktu pembuatan.
Ini memiliki inti (asli ) modul dan modul pihak ketiga (eksternal) diciptakan oleh masyarakat. Saat ini, ada lebih dari seratus modul pihak ketiga yang dapat kami manfaatkan.
Ditulis dalam C bahasa, ini adalah perangkat lunak yang sangat cepat dan ringan.
Menginstal NGINX dari kode sumber relatif "mudah" - unduh versi terbaru kode sumber NGINX, konfigurasikan, bangun, dan instal.
Anda harus memilih apakah akan mengunduh jalur utama atau stabil versi, tetapi membangunnya sama persis.
Dalam tutorial ini, kita akan membangun NGINX dengan semua modul yang tersedia di NGINX versi open source dan kita akan menggunakan mainline versi yang ada di 1.15.0 pada saat penulisan ini. Perbarui nomor versi saat versi yang lebih baru tersedia.
Versi stabil vs. arus utama
NGINX Open Source tersedia dalam dua versi:
- Saluran utama – Termasuk fitur terbaru dan perbaikan bug dan selalu up to date. Ini dapat diandalkan, tetapi mungkin menyertakan beberapa modul eksperimental, dan mungkin juga memiliki sejumlah bug baru.
- Stabil – Tidak menyertakan semua fitur terbaru, tetapi memiliki perbaikan bug penting yang selalu di-backport ke versi arus utama.
Modul inti vs. modul pihak ketiga
NGINX memiliki dua jenis modul yang dapat Anda manfaatkan: modul inti dan modul pihak ketiga .
Modul inti dibuat oleh pengembang inti NGINX dan merupakan bagian dari perangkat lunak itu sendiri.
Modul pihak ketiga dibuat oleh komunitas dan Anda dapat menggunakannya untuk memperluas fungsionalitas NGINX. Ada banyak modul pihak ketiga yang berguna, yang paling terkenal di antaranya adalah:PageSpeed, ModSecurity, RTMP, Lua dll...
Modul statis vs. modul dinamis
Modul statis ada di NGINX sejak versi pertama. Modul dinamis diperkenalkan dengan NGINX 1.9.11+ pada Februari 2016.
Dengan modul statis, kumpulan modul yang membentuk biner NGINX ditetapkan pada waktu kompilasi oleh ./configure
naskah. Modul statis menggunakan --with-foo_bar_module
atau --add-module=PATH
sintaks.
Untuk mengkompilasi modul inti (standar) sebagai dinamis, kami menambahkan =dynamic
, misalnya --with-http_image_filter_module=dynamic
.
Untuk mengompilasi modul pihak ketiga sebagai dinamis, kami menggunakan --add-dynamic-module=/path/to/module
sintaks dan kemudian kami memuatnya dengan menggunakan load_module
direktif dalam konteks global nginx.conf
berkas.
Persyaratan untuk membangun NGINX dari sumber
Dibandingkan dengan beberapa perangkat lunak UNIX/Linux lainnya, NGINX cukup ringan dan tidak memiliki banyak dependensi perpustakaan. Konfigurasi build default hanya bergantung pada 3 library yang akan diinstal: OpenSSL /LibreSSL /SSL Membosankan , Zlib dan PCRE .
- Persyaratan wajib:
- Koleksi Kompilator GNU (GCC )
- Versi pustaka OpenSSL antara 1.0.2 - 1.1.1 atau pustaka LibreSSL atau perpustakaan BoringSSL
- Versi pustaka Zlib antara 1.1.3 - 1.2.11
- Versi pustaka PCRE antara 4.4 - 8.42
- Persyaratan opsional:
- Perl
- LibGD
- Perpustakaan MaxMind GeoIP Legacy C
- libxml2
- libxslt
CATATAN :NGINX juga dapat dikompilasi terhadap LibreSSL dan MembosankanSSL pustaka kripto alih-alih OpenSSL .
Persyaratan
- Server yang menjalankan Ubuntu 18.04 LTS.
- Pengguna non-root dengan hak istimewa sudo.
Langkah Awal
Periksa versi Ubuntu:
lsb_release -ds
# Ubuntu 18.04 LTS
Siapkan zona waktu:
timedatectl list-zona waktu
sudo timedatectl set-timezone 'Region/City'
Perbarui paket sistem operasi Anda:
sudo apt update && sudo apt upgrade -y
Buat NGINX dari sumber
NGINX adalah program yang ditulis dalam C , jadi Anda harus menginstal alat kompiler terlebih dahulu. Instal build-essential
, git
dan tree
paket:
sudo apt install -y build-essential git tree
Unduh versi arus utama terbaru dari kode sumber NGINX dan ekstrak. Kode sumber NGINX didistribusikan sebagai arsip terkompresi (tarball gzip), seperti kebanyakan perangkat lunak Unix dan Linux:
wget https://nginx.org/download/nginx-1.15.0.tar.gz &&tar zxvf nginx-1.15.0.tar.gz
Unduh kode sumber dependensi NGINX wajib dan ekstrak:
# PCRE versi 8.42
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz &&tar xzvf pcre-8.42.tar.gz
# zlib versi 1.2.11
wget https://www.zlib.net/zlib-1.2.11.tar.gz &&tar xzvf zlib-1.2.11.tar.gz
# OpenSSL versi 1.1.0h
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz &&tar xzvf openssl-1.1.0h.tar.gz
Instal dependensi NGINX opsional:
sudo add-apt-repository -y ppa:maxmind/ppa
sudo apt update &&sudo apt upgrade -y
sudo apt install -y perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev
Bersihkan semua .tar.gz
file. Kami tidak membutuhkannya lagi:
rm -rf *.tar.gz
Masuk ke direktori sumber NGINX:
cd ~/nginx-1.15.0
Untuk direktori ukuran yang baik dan file yang menyusun kode sumber NGINX dengan tree
utilitas:
pohon -L 2 .
Salin halaman manual NGINX ke /usr/share/man/man8/
direktori:
sudo cp ~/nginx-1.15.0/man/nginx.8 /usr/share/man/man8
sudo gzip /usr/share/man/man8/nginx.8
ls / usr/share/man/man8/ | grep nginx.8.gz
# Periksa apakah halaman manual untuk NGINX berfungsi:
man nginx
Untuk bantuan, Anda dapat melihat daftar lengkap opsi waktu kompilasi NGINX terbaru dengan menjalankan:
./configure --help
# Untuk melihat modul inti yang diinginkan dapat dibuat sebagai run dinamis:
./configure --help | grep -F =dinamis
Konfigurasi, kompilasi, dan instal NGINX:
./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid -path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--build=Ubuntu \
--builddir=nginx-1.15.0 \
--with-select_module \
--dengan polling -with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module \
> --with-http_addition_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
= ge --with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link --> --with-http_slice_module \
--with-http_stub_status_module \
--with-http_perl_module=dynamic \
--with-perl_modules/share_path=/usr br /> --with-perl=/usr/bin/perl \
--http-log-path=/var/log/nginx/access.log \
--http-client-body -temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path =/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with- mail=dynamic \
--with-mail_ssl_module \
--with-stream=dynamic \
--with-stream_ssl_module \
\_ --with modul --with-stream_geoip_module=dynamic \
--with-stream_ssl_preread_module \
--with-compat \
--with-pcre=../pcre-8 .42 \
--with-zlib=../zlib-1.2.11 \
--with-openssl=../openssl-1.1.0h \
- -with-openssl-opt=no-nextprotoneg \
--with-debug
make
sudo make install
Setelah membangun NGINX, navigasikan ke beranda (~
) direktori:
cd
Symlink /usr/lib/nginx/modules
ke /etc/nginx/modules
direktori. etc/nginx/modules
adalah tempat standar untuk modul NGINX:
sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules
Cetak versi NGINX, versi kompiler, dan konfigurasikan parameter skrip:
sudo nginx -V
# versi nginx:nginx/1.15.0 (Ubuntu)
# dibuat oleh gcc 7.3.0 (Ubuntu 7.3.0-16ubuntu3)
# dibuat dengan OpenSSL 1.1.0j 27 Mar 2018
# dukungan TLS SNI diaktifkan
# konfigurasikan argumen:--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/ usr/lib/nginx/modules
# . . .
# . . .
Buat grup dan pengguna sistem NGINX:
sudo adduser --system --home /nonexistent --shell /bin/false --no-create-home --disabled-login --disabled-password --gecos "nginx user" --group nginxPeriksa sintaks NGINX dan potensi kesalahan:
sudo nginx -t
# Akan memunculkan kesalahan ini -> nginx:[emerg] mkdir() "/var/cache/nginx/client_temp" gagal (2:Tidak ada file atau direktori seperti itu)
# Buat direktori cache NGINX dan atur izin yang sesuai
sudo mkdir -p /var/cache/nginx/client_temp /var/cache/nginx/fastcgi_temp /var/cache/nginx/proxy_temp /var/cache/ nginx/scgi_temp /var/cache/nginx/uwsgi_temp
sudo chmod 700 /var/cache/nginx/*
sudo chown nginx:root /var/cache/nginx/*
# Periksa kembali sintaks dan kemungkinan kesalahan.
sudo nginx -tBuat file unit sistem NGINX:
sudo vim /etc/systemd/system/nginx.serviceSalin/tempel konten di bawah ini ke
/etc/systemd/system/nginx.service
berkas:[Unit]Description=nginx - server web kinerja tinggiDocumentation=https://nginx.org/en/docs/After=network-online.target remote-fs.target nss-lookup.targetWants=network-online.target [Layanan]Tipe=forkingPIDFile=/var/run/nginx.pidExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.confExecStart=/usr/sbin/nginx -c /etc/nginx/nginx. confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s TERM $MAINPID[Install]WantedBy=multi-user.targetAktifkan NGINX untuk memulai saat boot dan segera memulai NGINX:
sudo systemctl aktifkan nginx.service
sudo systemctl start nginx.servicePeriksa apakah NGINX akan dimulai secara otomatis setelah reboot:
sudo systemctl diaktifkan nginx.service
# diaktifkanPeriksa apakah NGINX berjalan dengan menjalankan salah satu perintah berikut:
sudo systemctl status nginx.service
# atau
ps aux | grep nginx
# atau
curl -I 127.0.0.1Anda juga dapat membuka browser dan menavigasi ke domain/alamat IP untuk melihat halaman NGINX default. Itu adalah indikator bahwa NGINX aktif dan berjalan.
Buat Firewall yang Tidak Rumit (UFW ) Profil aplikasi NGINX:
sudo vim /etc/ufw/applications.d/nginxSalin/tempel konten di bawah ini ke
/etc/ufw/applications.d/nginx
berkas:[Nginx HTTP]title=Server Web (Nginx, HTTP)description=Server web kecil, tapi sangat kuat dan efisienports=80/tcp[Nginx HTTPS]title=Server Web (Nginx, HTTPS)description=Kecil, tapi sangat web serverports yang kuat dan efisien=443/tcp[Nginx Full]title=Web Server (Nginx, HTTP + HTTPS)description=Serverport web kecil, tetapi sangat kuat dan efisien=80,443/tcpVerifikasi bahwa profil aplikasi UFW dibuat dan dikenali:
daftar aplikasi sudo ufw
# Aplikasi yang tersedia:
# Nginx Lengkap
# Nginx HTTP
# Nginx HTTPS
# OpenSSHNGINX secara default, menghasilkan cadangan
.default
file di/etc/nginx
. Hapus.default
file dari/etc/nginx
direktori:sudo rm /etc/nginx/*.defaultTempatkan penyorotan sintaks dari konfigurasi NGINX untuk editor Vim ke
~/.vim
:# Untuk usermkdir non-root biasa ~/.vim/cp -r ~/nginx-1.15.0/contrib/vim/* ~/.vim/# Untuk root usersudo mkdir /root/.vim/sudo cp - r ~/nginx-1.15.0/contrib/vim/* /root/.vim/CATATAN :Dengan melakukan langkah di atas, Anda akan mendapatkan penyorotan sintaks yang bagus saat mengedit file konfigurasi NGINX di editor Vim.
Buat
conf.d
,snippets
,sites-available
dansites-enabled
direktori di/etc/nginx
direktori:sudo mkdir /etc/nginx/{conf.d,snippets,sites-available,sites-enabled}Ubah izin dan kepemilikan grup file log NGINX:
sudo chmod 640 /var/log/nginx/*
sudo chown nginx:adm /var/log/nginx/access.log /var/log/nginx/error.logBuat konfigurasi logrotasi untuk NGINX.
sudo vim /etc/logrotate.d/nginxIsi file dengan teks di bawah ini, lalu simpan dan keluar:
/var/log/nginx/*.log { daily missingok rotate 52 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate if [ -f /var/run/nginx.pid ]; lalu bunuh -USR1 `cat /var/run/nginx.pid` fi endscript}Hapus semua file yang diunduh dari direktori home:
cd ~
rm -rf nginx-1.15.0/ openssl-1.1.0h/ pcre-8.42/ zlib-1.2.11/Itu dia. Sekarang, Anda telah menginstal NGINX versi terbaru dengan membangunnya dari kode sumber. Itu dikompilasi secara statis terhadap beberapa perpustakaan penting seperti OpenSSL. Seringkali, versi OpenSSL yang disediakan sistem sudah usang. Dengan menggunakan metode penginstalan dengan versi OpenSSL yang lebih baru, Anda dapat memanfaatkan sandi baru seperti
CHACHA20_POLY1305
dan protokol seperti TLS 1.3 yang akan tersedia di OpenSSL1.1.1.
Selain itu, dengan mengompilasi biner Anda sendiri, Anda dapat menyesuaikan fungsionalitas apa yang akan disediakan NGINX Anda, yang jauh lebih fleksibel daripada menginstal biner yang sudah dibuat sebelumnya.
Cara Menginstal Apache Cordova di Ubuntu 18.04 LTS Cara Menginstal CMS Bahan Bakar di Ubuntu 18.04 LTSUbuntu