Mwongozo Kamili wa Kusakinisha na Kusanidi Nginx kwenye Ubuntu [Rafiki kwa Wanaoanza]

1. Utangulizi

Watu wengi wanataka kutumia Nginx kwenye Ubuntu, lakini ikiwa wewe ni mpya, huenda usijui wapi uanze. Makala hii inatoa mwongozo wa hatua kwa hatua kwa wanaoanza, ikijumuisha kila kitu kutoka usakinishaji na usanidi hadi usimamizi katika mazingira ya Ubuntu.

Nini Nginx?

Nginx (inavyotamkwa “engine-x”) ni seva ya HTTP yenye utendaji wa juu na seva ya proxy ya kinyume. Inatumika sana duniani kote kutokana na muundo wake wa uzito hafifu na ubunifu, hasa uwezo wake wa kushughulikia mzigo mkubwa wa trafiki.

Faida za Kutumia Nginx kwenye Ubuntu

Ubuntu ni usambazaji maarufu wa Linux unaofanya kazi vizuri na Nginx. Kwa mfumo wake wa usimamizi wa vifurushi (APT), kusakinisha na kusasisha Nginx ni rahisi, na inatoa uthabiti na usalama bora.

Kwa kusoma makala hii, utajifunza:

  • Jinsi ya kusakinisha Nginx kwenye Ubuntu
  • Usanidi wa msingi na taratibu za usimamizi
  • Uboreshaji wa utendaji na utatuzi wa matatizo

Sasa, hebu tuanze.

2. Jinsi ya Kusakinisha Nginx kwenye Ubuntu

Ili kuendesha Nginx kwenye Ubuntu, unahitaji kwanza kuuisakinisha ipasavyo. Sehemu hii inatoa mwongozo wa wazi, wa hatua kwa hatua wa mchakato wa usakinishaji.

Kuangalia Vifurushi Vinavyohitajika

Kabla ya kuanza usakinishaji, hakikisha mfumo wako upo kwenye hali ya kisasa kwa kuendesha amri zifuatazo:

sudo apt update
sudo apt upgrade

Kusakinisha Nginx

Ili kusakin Nginx, ingiza amri ifuatayo:

sudo apt install nginx

Amri hii inapakua kiotomatiki na kusakinisha Nginx kutoka ghala la APT la Ubuntu.

Kuhakikisha Usakinishaji

Ili kuangalia kama usakinishaji umefaulu, tumia amri ifuatayo kuangalia hali ya Nginx:

sudo systemctl status nginx

Kama matokeo yanaonyesha “active (running)”, usakinishaji umefaulu.

Kusanidi Ukuta wa Moto

Ubuntu ina UFW (Uncomplicated Firewall), ambayo unaweza kutumia kuruhusu trafiki ya Nginx.

sudo ufw allow 'Nginx Full'
sudo ufw enable

Sasa, Nginx imewekwa kazi kwenye milango 80 (HTTP) na 443 (HTTPS).

3. Usidi wa Msingi wa Nginx kwenye Ubuntu

Kusakinisha Nginx pekee haitoshi. Ifuatayo, unahitajiusanidi ipasavyo kwa matumizi bora.

Faili za Usanidi na Muundo wa Msingi

Faili kuu za usanidi wa Nginx ziko katika:

  • Faili kuu la usanidi: /etc/nginx/nginx.conf
  • Faili za usanidi maalum za tovuti: Ndani ya saraka ya /etc/nginx/sites-available/

Kwa kawaida, unaunda faili la usanidi wa mwenyeji pepe (virtual host) katika sites-available na kuunda kiungo cha ishara (symbolic link) kwenda sites-enabled ili kuifanya iwe hai.

Kuweka Mwenyeji Pepe

Wenyeji pepe wanakuwezesha kusimamia majina ya kikoa (domains) au miradi mingi kwenye seva moja. Mfano ufuatao unaweka example.com:

sudo nano /etc/nginx/sites-available/example.com

Ingiza maudhui yafuatayo:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

Hifadhi faili na uanze usanidi kwa kutumia amri zifuatazo:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Kusanidi SSL/TLS

Ili kuwezesha mawasiliano salama, weka cheti cha SSL/TLS. Unaweza kutumia Let’s Encrypt kupata cheti bure.

Kwanza, sakinisha certbot:

sudo apt install certbot python3-certbot-nginx

Halafu, endesha amri ifuatayo kupata na kusanidi kiotomatiki cheti cha SSL:

sudo certbot --nginx -d example.com -d www.example.com

Ili kuzuia cheti kuepuka muda wake, pia weka upya cheti kiotomatiki.

4. Kusimamia na Kudhibiti Nginx

Baada ya kusakinisha na kusanidi Nginx, unahitaji kujifunza jinsi ya kuanza, kusitisha, kupakia upya usanidi, na kutatua matatizo. Sehemu hii inashughulikia amri muhimu za usimamizi na mbinu za utatuzi wa matatizo.

Amri za Msingi za Nginx

Kwenye Ubuntu, unaweza kusimamia Nginx kwa kutumia amri ya systemctl. Hapa kuna shughuli kuu:

  1. Anza Nginx
sudo systemctl start nginx
  1. Simamisha Nginx
sudo systemctl stop nginx
  1. Anza upya Nginx Inahitajika wakati wa kufanya mabadiliko makubwa ya muundo.
sudo systemctl restart nginx
  1. Pakia upya Nginx Tumia mabadiliko ya muundo bila kuanza upya.
sudo systemctl reload nginx
  1. Angalia Hali ya Nginx Thibitisha kama Nginx inafanya kazi vizuri.
sudo systemctl status nginx

Kuwezesha Kuanza Kiotomatiki

Ili kuhakikisha Nginx inaanza kiotomatiki baada ya kurekebisha mfumo:

  1. Wezesha kuanza kiotomatiki
sudo systemctl enable nginx
  1. Zima kuanza kiotomatiki (ikiwa inahitajika)
sudo systemctl disable nginx

Kuangalia Rekodi kwa Kutafuta Tatizo

Ikiwa Nginx haifanyi kazi kama inavyotarajwa, angalia rekodi ili kupata sababu.

  1. Tazama Rekodi za Makosa
sudo tail -f /var/log/nginx/error.log
  1. Tazama Rekodi za Ufikiaji
sudo tail -f /var/log/nginx/access.log

5. Kuweka Muundo wa Firewall ya Nginx na Kuboresha Usalama

Usalama ni muhimu wakati wa kuendesha Nginx. Sehemu hii inaeleza jinsi ya kuweka bandari kwa kutumia firewall ya Ubuntu (UFW) na kuimarisha usalama wa Nginx.

Kufungua Bandari Kwa Kutumia UFW

UFW (Uncomplicated Firewall) ni zana ya firewall iliyojumuishwa katika Ubuntu kwa chaguo-msingi. Ili kuhakikisha Nginx inafanya kazi vizuri, unahitaji kufungua bandari 80 (HTTP) na 443 (HTTPS).

  1. Angalia hali ya sasa ya UFW
sudo ufw status
  1. Ruhusu trafiki ya Nginx Tekeleza amri ifuatayo ili kufungua bandari zinazohitajika:
sudo ufw allow 'Nginx Full'
  1. Wezesha UFW Ikiwa firewall imezimwa, iwezeshe:
sudo ufw enable

Maboresho Ya Ziada Ya Usalama

  1. Zima Mbinu za HTTP Zisizohitajika Ili kuboresha usalama, zima mbinu za HTTP zisizohitajika kwa kuongeza yafuatayo kwenye faili ya muundo wa Nginx:
if ($request_method !~ ^(GET|POST|HEAD)$) {
    return 444;
}
  1. Zima Orodha ya Saraka Zuia maudhui ya saraka yasifikike hadharani kwa kuongeza:
autoindex off;
  1. Imarisha SSL/TLS Tumia mipangilio thabiti ya usimbuaji katika muundo wako wa SSL:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;

6. Kurekebisha Utendaji wa Nginx na Kutafuta Tatizo

Nginx inajulikana sana kwa utendaji wake wa juu, lakini kurekebisha vizuri kunaweza kuboresha ufanisi wake zaidi. Sehemu hii inashughulikia mbinu za uboreshaji na suluhu za kawaida za kutafuta tatizo.

Kurekebisha Utendaji

1. Kuweka Michakato ya Wafanyakazi

Nginx inafuata usanifu wa michakato mingi. Kuweka idadi sahihi ya michakato ya wafanyakazi inaboresha utendaji.

Hariri faili ya muundo /etc/nginx/nginx.conf na weka:

worker_processes auto;

Mpangilio wa “auto” hurekebisha kiotomatiki idadi ya michakato ya wafanyakazi kulingana na cores za CPU.

2. Ongeza Uunganisho wa Wafanyakazi

Kwa chaguo-msingi, kila mchakato wa mfanyakazi una idadi ndogo ya uunganisho. Kuongeza thamani hii inaboresha udhibiti wa mzigo wa trafiki ya juu.

Ongeza au badilisha mstari ufuatayo katika faili ya muundo:

worker_connections 1024;

3. Wezesha HTTP/2

Kuwezesha HTTP/2 kunaboresha ufanisi wa mawasiliano na kuharakisha upakiaji wa tovuti.

Badilisha faili ya /etc/nginx/sites-available/example.com na ubadilishe amri ya listen kama ifuatayo:

listen 443 ssl http2;

Kisha pakia upya Nginx:

sudo systemctl reload nginx

4. Wezesha Ubaji wa Maudhui

Kubana faili kabla ya kuzitumia hupunguza matumizi ya bandwidth na inaboresha nyakati za upakiaji.

Ongeza au wezesha mipangilio ifuatayo:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

5. Weka Kihifadhi

Kuweka kihifadhi hupunguza maombi yanayorudiwa kwa rasilimali za tuli.

Ongeza muundo ufuatayo:

location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
    expires 30d;
    access_log off;
}

Kutafuta Tatizo Kawaida

1. Udhibiti wa Ombi Polepole Chini ya Mzigo Mkubwa

  • Sababu: Mchakato wa wafanyakazi usiotosha au mipaka yaanisho.
  • Suluhisho: Rekebisha mchakato wa wafanyakazi na muunganisho, au fikiria kutumia kipangilio mzigo.

2. Hitilafu ya “403 Haramishwa”

  • Sababu: Maelekezo ya root yasiyo sahihi katika faili la usanidi au ruhusa za faili zisizo sahihi.
  • Suluhisho: Angalia maelekezo ya root na sasisha ruhusa za faili:
sudo chmod -R 755 /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com/html

3. Masuala ya Muda wa Seva

  • Sababu: Muda mrefu wa usindikaji wa ombi.
  • Suluhisho: Rekebisha mipangilio ya muda:
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;

4. Hitilafu za Kuanza Upya Nginx

  • Sababu: Hitilafu katika faili la usanidi.
  • Suluhisho: Jaribu usanidi kabla ya kuanza upya:
sudo nginx -t

7. Muhtasari na Hatua Zifuatazo

Katika mwongozo huu, tulijifunza jinsi ya kusakinisha, kusanidi, na kudhibiti Nginx kwenye Ubuntu. Hebu tupitie kile tulichojifunza na kuchunguza hatua zifuatazo.

Muhtasari waokezo Muhimu

1. Kusakinisha Nginx kwenye Ubuntu

  • Iliandaa vifurushi vinavyohitajika na kusakinisha Nginx kwa kutumia APT.
  • Imeunda ukuta wa moto kuruhusu trafiki ya Nginx.

2. Usanidi wa Msingi

  • Kuelewa muundo wa faili la usanidi la Nginx na kuweka vigeni vya pepe na SSL/TLS.

3. Kudhibiti Nginx

  • Kujifunza amri muhimu za kuanzisha, kusimamisha, na kupakia upya Nginx.
  • Kula logi kwa ajili ya utatuzi wa matatizo.

4. Uboreshaji wa Usalama

  • Imeunda UFW na kutekeleza mipangilio ya ziada ya usalama.

5. Urekebishaji wa Utendaji na Utatuzi wa Matatizo

  • Imeboresha michakato ya wafanyakazi, kuwezesha HTTP/2, na kuweka uhifadhi.
  • Ilitatua masuala ya kawaida ya Nginx.

Hatua Zifuatazo

Sasa unapokuwa na misingi ya Nginx kwenye Ubuntu, fikiria hatua zifuatazo:

  • Jifunze usanidi wa juu kama usambazaji mzigo na proxy ya kinyume.
  • Boresha usalama kwa WAF na moduli za ziada za usalama za Nginx.
  • Otomatisha usambazaji kwa kutumia Ansible au Docker.
  • Simamia utendaji kwa zana kama Prometheus na Grafana.

Kwa kutumia dhana hizi, unaweza kuendesha na kudhibiti kwa ufanisi seva ya wavuti yenye utendaji wa juu kwa Nginx kwenye Ubuntu.