TBu məqalə sizə Nginx-də SSL sertifikatınızı necə quraşdırmaq və HTTP://-dən HTTPS://-ə avtomatik yönləndirmə qurmaq üçün addımları göstərəcək.
1. Sertifikatları veb saytınızın yerləşdiyi serverə yükləyin
CSR kodunun yaradılması və SSL aktivləşdirmə addımlarını tamamladıqdan sonra, Sectigo (əvvəl Comodo kimi tanınan) Sertifikatları ehtiva edən zip faylını email vasitəsilə alacaqsınız. Alternativ olaraq, onları NiceNic Hesab panelinizdən yükləyə bilərsiniz.
Qeyd: Əgər sertifikatı aktivləşdirərkən NGINX serverini seçsəniz, '.crt' genişlənməli Sertifikat faylı və '.ca-bundle' genişlənməli Sertifikat Orqanı (CA) bundle faylı daxil olmaqla zip faylı alacaqsınız.
Hər iki faylı istədiyiniz üsulla serverə yükləyin. Məsələn, FTP müştərisi istifadə etməklə.
Hər Sertifikat üçün Bundle faylını burada göstərilən təlimatlara uyğun olaraq da yükləyə bilərsiniz.
2. Bütün sertifikatları tək bir faylda birləşdirin
Bütün Sertifikatların (sizin_domen.crt və sizin_domen.ca-bundle) tək '.crt' faylında birləşdirilməsi tələb olunur.
Faylda əvvəlcə domeniniz üçün Sertifikat, ardınca isə Sertifikat zənciri (CA Bundle) olmalıdır.
Sertifikat fayllarını yüklədiyiniz qovluğa daxil olun. Faylları birləşdirmək üçün aşağıdakı əmri işlədin:
$ cat sizin_domen.crt sizin_domen.ca-bundle >> sizin_domen_chain.crt
Qeyd edin ki, əgər sertifikat faylları NiceNic hesabınızdan yüklənibsə, istifadə üçün ən yaxşı əmr belə olacaq:
$ cat sizin_domen.crt > sizin_domen_chain.crt ; echo >> sizin_domen_chain.crt ; cat sizin_domen.ca-bundle >> sizin_domen_chain.crt
3. Ayrı Nginx server bloku yaradılması və ya mövcud konfiqurasiya faylının redaktəsi
Nginx-də SSL sertifikatını quraşdırmaq üçün serverə hansı faylları istifadə edəcəyini elan etməlisiniz, bunu ya a) yeni bir konfiqurasiya faylı yaradaraq, ya da b) mövcud olanı redaktə edərək edə bilərsiniz.
a) Yeni bir konfiqurasiya faylı əlavə etməklə veb sayt üçün ayrı bir konfiqurasiya faylında problem yaşanmamasına əmin ola bilərsiniz. Bundan əlavə, yeni konfiqurasiya ilə əlaqədar məsələlər varsa, quraşdırmanı diaqnoz etmək daha asan olacaq.
Bunun üçün aşağıdakı qovluqda yeni konfiqurasiya faylı yaratmağı təklif edirik:
/etc/nginx/conf.d
Bu əmr vasitəsilə edə bilərsiniz:
sudo nano /etc/nginx/conf.d/Your_domen*-ssl.conf
Burada Your_domen*-ssl.conf yeni yaradılmış faylın adıdır.
Sonra aşağıdakı 443 pv? yatu üçün server bloklarından birini kopyalayın və qovluqları redaktə edin. Server adı və webroot yolunun həm 80 pv? yatu üçün server blokunda, həm də 443 pv? yatu üçün olan blokda uyğun olduğundan əmin olun. Əgər saxlanılmalı digər vacib dəyərləriniz varsa, onları da yeni yaradılan server blokuna əlavə edin.
b) Veb serverin defolt konfiqurasiya faylını redaktə edin ki, onun adı nginx.conf-dur. Bu fayl aşağıdakı qovluqlarda ola bilər:
/usr/local/nginx/conf
/etc/nginx
/usr/local/etc/nginx
Bu faylı tapmaq üçün aşağıdakı əmrdən istifadə edə bilərsiniz:
sudo find / -type f -iname "nginx.conf"
Tapdıqdan sonra, faylı belə açın:
sudo nano nginx.conf
Sonra aşağıda verilmiş 443 pv? yatu üçün server bloklarından birini kopyalayın və 80 pv? yatlu server bloku üzrə qovluqları (uyğun server adı, webroot yolu və ehtiyac olan digər vacib dəyərlər) redaktə edin. Alternativ olaraq, 80 pv? yat üçün server blokunu kopyalayıb altına yapışdıra, pv? yatu dəyişdirə və SSL ilə bağlı lazım olan direktivləri əlavə edə bilərsiniz.
Server blokunu seçin:
Aşağıda sizin Nginx versiyanıza uyğun server bloku tapa bilərsiniz.
Qeyd: Nginx versiyanızı yoxlamaq üçün bu əmrdən istifadə edin:
sudo nginx -v

Qeyd: Server blokunda fayl adlarını, məsələn sizin_domen_chain.crt, öz məlumatlarınızla əvəz edin və onların yollarını /path/to/ ilə dəyişdirin.
Nginx versiyası 1.14 və aşağı üçün server bloku:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/sizin_domen_chain.crt;
ssl_certificate_key /path/to/sizin_private.key;
root /path/to/webroot;
server_name sizin_domen.com;
}
Qeyd: Əgər lazımdırsa, belə konfiqurasiyada birdən çox host adı göstərə bilərsiniz, məsələn:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/sizin_domen_chain.crt;
ssl_certificate_key /path/to/sizin_private.key;
root /path/to/webroot;
server_name sizin_domen.com www.sizin_domen.com;
}
Nginx versiyası 1.15 və yuxarı üçün server bloku:
server {
listen 443 ssl;
ssl_certificate /path/to/certificate/sizin_domen_chain.crt;
ssl_certificate_key /path/to/sizin_private.key;
root /path/to/webroot;
server_name sizin_domen.com;
}
ssl_certificate əvvəlcədən yaratdığınız birləşdirilmiş sertifikat faylına işarə etməlidir.
ssl_certificate_key CSR kodu ilə yaradılmış Özəl açara işarə etməlidir.
Aşağıda Nginx-də Özəl açarı tapmaq üçün bəzi məsləhətlər var.
Vacib: Multi-Domen və ya Wildcard Sertifikat üçün, Sertifikata daxil olan hər bir domen/subdomen üçün ayrıca server bloku əlavə etmək lazımdır. Hər bir server blokunda müvafiq domen/subdomen və sertifikat fayllarına aid yolları yuxarıda göstərildiyi kimi təyin edin.
Uyğun server bloku fayla əlavə edildikdən sonra dəyişiklikləri saxladığınızdan əmin olun. Sonra aşağıdakı addımlarla dəyişiklikləri yoxlaya bilərsiniz.
Konfiqurasiya faylının sintaksisinin düzgünlüyünü yoxlamaq üçün aşağıdakı əmri işlədin:
sudo nginx -t

Əgər səhvlər alırsınızsa, bələdçini düzgün izlədiyinizə yenidən baxın. Hər hansı sualınız varsa, Dəstək Komv?amızla əlaqə saxlamaqdan çəkinməyin.
Bir məsləhət: səhvlərin diaqnostikası üçün aşağıdakı əmri işə salın:
sudo nginx -T | grep 'errv? ya_log'
Əgər qeyd edilmiş faylların heç biri mövcud deyilsə, fayllar şərhə alınmışsa və ya heç bir errv? ya log faylı təyin edilməyibsə, defolt sistem jurnalını yoxlamaq lazımdır:
tail /var/log/nginx/errv? ya.log -n 20
Əgər server testi uğurla göstərirsə, dəyişiklikləri tətbiq etmək üçün Nginx-i bu əmrlə yenidən başladın:
sudo nginx -s reload
İndi SSL Sertifikatınız quraşdırılıb. Quraşdırmanı buradan yoxlaya bilərsiniz.
Vacib qeydlər:
Bəzən, əmrlə birləşdirilmiş SSL faylını quraşdırdıqdan sonra, 'Nginx/Apache errv? ya: 0906D066:PEM routines:PEM_read_bio:bad end line' xətası ala bilərsiniz; bu halda həll yolu istinada baxmaq olar.
Başqa bir ümumi problem isə 'Nginx SSL: errv? ya:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch' xətasıdır; bununla bağlı daha ətraflı və mümkün həll yollarını bu məqalədə tapa bilərsiniz.
4. HTTPS yönləndirməsini qurun
HTTP-dən HTTPS-ə yönləndirmə quraşdırmağı tövsiyə edirik. Beləliklə, veb saytınızın istifadəçiləri yalnız saytınızın təhlükəsiz versiyasına daxil ola biləcəklər.
Bunu etmək üçün, 80 pv? yat üçün server blokunun konfiqurasiya faylına bir sətr əlavə etməlisiniz.
Məsləhətlər:
İndiki aktiv olan konfiqurasiya fayllarını tapmaq üçün aşağıdakı əmrlərdən birini istifadə edə bilərsiniz:
sudo nginx -T | grep -iw "configuration file"
sudo nginx -T | grep -iw "include"
Konfiqurasiya faylının defolt yolları bunlardır:
RHEL əsaslı Linux ?S üçün: /etc/nginx/conf.d/default.conf
Debian əsaslı Linux ?S üçün: /etc/nginx/sites-enabled/default
Lazımi server blokunu daxil edən faylı tapmaq üçün faylları açın. Bunun üçün işlədin:
sudo nano fayl_adı
80 pv? yat üçün (defolt HTTP pv? yatu) server bloku olan faylı tapdıqdan sonra, aşağıdakı sətri əlavə edin:
return 301 https://$server_name$request_uri;
Qeyd: Yuxarıdakı yönləndirmə qaydası server blokunda sonuncu sətir kimi daxil edilməlidir.