Looge virtuaalhostid, paroolikaitsekataloogid ja SSL-sertifikaadid, kasutades Arch Linuxis käsku "Nginx Web Server"
Eelmine Arch Linuxi ‘LEMP’ artikkel hõlmas just põhilisi asju alates võrguteenuste (Nginx, MySQL andmebaas ja PhpMyAdmin) installimisest ning MySQL-i serveri ja PhpMyadmini jaoks minimaalse turvalisuse seadistamisest.
See teema on rangelt seotud endise LEMP-i installimisega Arch Linuxi ja juhendab teid keerukamate konfiguratsioonide seadistamisel LEMP-i virnale, eriti Nginx veebiserveri konfiguratsioonidele, näiteks virtuaalsete hostide loomine , kasutage parooliga kaitstud katalooge , looge ja konfigureerige HTTP turvaliste soklite kiht , HTTP ebaturvalised ümbersuunamised saidile HTTPS ja esitavad teile ka kasulikke Bashi skripte, mis hõlbustab virtuaalsete hostide aktiveerimist ja genereerib SSL-i sertifikaadi ja võtmed .
Installige Arch Linuxi LEMP koos MariaDB andmebaasiga
1. samm: lubage virtuaalsed hostid Nginxis
Üks lihtsamaid meetodeid Virtuaalsete hostide lubamiseks on lausete kaasamine kasutamine Nginxi peamises konfiguratsioonifailis, mis muudab edasiste konfiguratsioonide töö lihtsamaks ja tõhusamaks, kuna saate luua lihtsaid faile iga uue masina jaoks ja hoidke peamist konfiguratsioonifaili puhtamana.
See lähenemisviis toimib samamoodi nagu Apache veebiserveris , kõigepealt peate määrama uue URI tee, kus Nginx peaks failidirektiive lugema.
1. Niisiis, avage nginx.conf põhifail, mis asub süsteemiteel /etc/nginx/ ja allosas, enne viimast lokkisulgu „} ”Lisage tee, kus tulevased virtuaalse hosti konfiguratsioonifailid asuvad.
$ sudo nano /etc/nginx/nginx.conf
Allosas lisage järgmine lause.
include /etc/nginx/sites-enabled/*.conf;
See direktiiv ütleb Nginxile, et see peaks lugema kõiki faile, mis on leitud failist /etc/nginx/sites-enabled/ ja mis lõpevad laiendiga .conf .
2. Järgmine samm on luua saitidega lubatud kataloog ja veel üks nimega saidid saadaval , kuhu salvestate kõik oma virtuaalsete hostide konfiguratsioonifailid.
$ sudo mkdir /etc/nginx/sites-available /etc/nginx/sites-enabled
3. Nüüd on aeg luua uus virtuaalne host. Selles näites kasutatakse virtuaalse hostinimena süsteemi IP-aadressi, seega looge uus fail nimega name-ip.conf .
sudo nano /etc/nginx/sites-available/name-ip.conf
Lisage järgmine sisu.
## File content ## server { listen 80; server_name 192.168.1.33; access_log /var/log/nginx/192.168.1.33.access.log; error_log /var/log/nginx/192.168.1.33.error.log; root /srv/http; location / { index index.html index.htm index.php; autoindex on; autoindex_exact_size off; autoindex_localtime on; } location /phpmyadmin { rewrite ^/* /phpMyAdmin last; } location ~ \.php$ { #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration) fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
Virtuaalhosti aktiveeriv käsk on kuulamise pordi all lause server_name . Veel üks oluline direktiiv on siin juur lause, mis osutab Nginx Virtual Hostile failide sisu serveerimiseks süsteemist /srv/http/.
4. Viimane samm on luua kataloog /srv/http/ ja muuta faili name-ip.conf konfiguratsioon Nginxi lugemiseks kättesaadavaks (kasutades sümboolset linki), seejärel taaskäivitage deemon uute konfiguratsioonide nähtavaks muutmiseks.
$ sudo mkdir /srv/http/ $ sudo ln -s /etc/nginx/sites-available/name-ip.conf /etc/nginx/sites-enabled/ $ sudo systemctl restart nginx
5. Selle kinnitamiseks suunake brauser Archi süsteemi IP-aadressile ja peaksite nägema, et veebisisu erineb http:// localhost -ist. Siin olen lisanud väikese php-skripti, mis kontrollib ka FastCGI PHP konfiguratsioone nagu allpool oleval ekraanipildil.
$ sudo nano /srv/http/info.php
## File content ## <?php phpinfo(); ?>
6. Teine meetod, mille olen ise välja töötanud virtuaalsete hostide lubamiseks või keelamiseks Nginxis, on elegantsem ja see on inspireeritud Apache a2eniste skriptist.
Selle meetodi kasutamiseks avage failiredaktor ja looge $HOME teele alloleva sisuga uus fail nimega n2ensite , muutke see käivitatavaks ja käivitage juurõigustega ja edastage võimalusena uuele virtuaalse hostinimele ilma .conf lõppemiseta (täitke tasuta, et seda vastavalt teie vajadustele muuta).
$ sudo nano n2ensite
## File content ## #!/bin/bash if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled ; then echo "-----------------------------------------------" else mkdir /etc/nginx/sites-available mkdir /etc/nginx/sites-enabled fi avail=/etc/nginx/sites-available/$1.conf enabled=/etc/nginx/sites-enabled/ site=`ls /etc/nginx/sites-available/` if [ "$#" != "1" ]; then echo "Use script: n2ensite virtual_site" echo -e "\nAvailable virtual hosts:\n$site" exit 0 else if test -e $avail; then sudo ln -s $avail $enabled else echo -e "$avail virtual host does not exist! Please create one!\n$site" exit 0 fi if test -e $enabled/$1.conf; then echo "Success!! Now restart nginx server: sudo systemctl restart nginx" else echo -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site" exit 0 fi fi
Tehke see käivitatavaks ja käivitage see näitusena.
$ sudo chmod +x n2ensite $ sudo ./n2ensite your_virtual_host
7. Virtuaalsete hostide keelamiseks looge uus järgmise sisuga fail n2dissite ja rakendage samu seadeid nagu eespool.
$ sudo nano n2dissite
## File content ## #!/bin/bash avail=/etc/nginx/sites-enabled/$1.conf enabled=/etc/nginx/sites-enabled site=`ls /etc/nginx/sites-enabled/` if [ "$#" != "1" ]; then echo "Use script: n2dissite virtual_site" echo -e "\nAvailable virtual hosts: \n$site" exit 0 else if test -e $avail; then sudo rm $avail else echo -e "$avail virtual host does not exist! Exiting!" exit 0 fi if test -e $enabled/$1.conf; then echo "Error!! Could not remove $avail virtual host!" else echo -e "Success! $avail has been removed!\nPlease restart Nginx: sudo systemctl restart nginx" exit 0 fi fi
8. Nüüd saate selle kahe skripti abil mis tahes virtuaalse hosti lubada või keelata, kuid kui soovite seda rakendada kogu süsteemi hõlmavate käsudena, kopeerige mõlemad skriptid lihtsalt saidile /usr/local/bin/ ja siis saate kasutage seda ilma teed määramata.
$ sudo cp n2ensite n2dissite /usr/local/bin/
2. samm: lubage SSL virtuaalsete hostidega Nginxis
SSL ( Secure Sockets Layer ) on protokoll, mis on ette nähtud HTTP-ühenduste krüptimiseks võrkude või Interneti kaudu, mis muudab andmete voo edastamise turvalise kanali kaudu sümmeetriliste/asümmeetriliste krüptograafiavõtmete abil ja selle pakub Arch Linuxis OpenSSL pakett.
$ sudo pacman -S openssl
9. HTTPS-ühenduse lubamiseks Nginxiga peate esmalt looma virtuaalsete hostide võtmed. Asjade lihtsustamiseks olen välja töötanud ka väikese skripti, mis genereerib automaatselt krüptovõtmed kataloogi /etc/nginx/ssl kataloogile, kasutades võtmete nimedena virtuaalse hosti nimetamist.
Looge fail nimega nginx_gen_ssl ja lisage järgmine sisu.
$ sudo nano nginx_gen_ssl
## File content ## #!/bin/bash mkdir /etc/nginx/ssl cd /etc/nginx/ssl echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx SSL certificate!" read cert openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key chmod 600 $cert.key openssl req -new -key $cert.key -out $cert.csr openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt echo -e " The certificate $cert has been generated!\nPlease link it to nginx ssl available website!" ls -all /etc/nginx/ssl exit 0
10. Pärast skripti loomist lisage täitmisõigused, käivitage see ja esitage oma sertifikaadi valikud, millest kõige olulisem on väli Tavaline nimi (siia lisage ametlik domeeninimi) ja jätke väljad Parool ja Valikuline ettevõte tühjaks .
$ sudo chmod +x nginx_gen_ssl $ sudo ./nginx_gen_ssl
Klahvide genereerimise lõpus kuvatakse loetelu kõigi saadaolevate võtmetega Nginx ssl kataloogi all.
Samuti, kui soovite, et seda skripti kasutatakse süsteemi käsuna, kopeerige või teisaldage see kausta /usr/local/bin/.
$ sudo mv nginx_gen_ssl /usr/local/bin
11. Kui oleme Nginx SSL Virtual Host jaoks vajalikud võtmed genereerinud, on aeg tegelikult luua SSL Virtual Host konfiguratsioonifail. Kasutage virtuaalse hosti jaoks sama süsteemi IP-aadressi, mis ülalpool direktiivis serveri_nimi , kuid muutke veidi virtuaalse hosti failinime, lisades ssl enne .conf , et teile meelde tuletada, et see fail tähistab name-ip SSL-i virtuaalserverit.
$ sudo nano /etc/nginx/sites-availabe/name-ip-ssl.conf
Muutke sellel failil kuulake pordi avaldust väärtusele 443 ssl ja pakkuge SSL-i ja sertifikaadi võtmefailide teed varem loodud teedega, nagu väljavõte allpool välja näeb.
## File content ## server { listen 443 ssl; server_name 192.168.1.33; ssl_certificate /etc/nginx/ssl/192.168.1.33.crt; ssl_certificate_key /etc/nginx/ssl/192.168.1.33.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; access_log /var/log/nginx/192.168.1.33-ssl.access.log; error_log /var/log/nginx/192.168.1.33-ssl.error.log; root /srv/http; location / { index index.html index.htm index.php; autoindex on; autoindex_exact_size off; autoindex_localtime on; } location /phpmyadmin { rewrite ^/* /phpMyAdmin last; } location ~ \.php$ { #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration) fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
12. Pärast faili loomist kasutage selle aktiveerimiseks skripti n2ensite või käsurida ln (loob faili sümboolse lingi kataloogis saidid lubatud ) ), seejärel taaskäivitage seadete rakendamiseks Nginxi deemon.
$ sudo ./n2ensite name-ip-ssl OR $ sudo ln -s /etc/nginx/sites-available/name-ip-ssl.conf /etc/nginx/sites-enabled/ $ sudo systemctl restart nginx
13. Suunake oma brauser uuesti aadressile Arch IP URL , kuid seekord kasutage HTTPS-protokolli - https://192.168.1.33 minu süsteemis - ja Connection Untrusted peaks ilmuma turbeviga (lehel edasi liikumiseks lisage ja kinnitage turvaerand )
Nagu nüüd näete, pakub teie Nginxi virtuaalne host sama sisu nagu eelmine name-ip host, kuid seekord HTTP turvalist ühendust kasutades.
3. samm: pääsete PhpMyAdminile juurde virtuaalse hosti kaudu
Kui virtuaalne host on Nginxis lubatud, pole meil enam juurdepääsu teenuse http:// localhost sisule (localhost teenindab sisu tavaliselt loopback IP-aadressi või süsteemi IP-aadressi abil, kui pole teisiti konfigureeritud), kuna meil on kasutas Archi süsteemi IP-d kui serveri_nimi , nii et meie sisutee on muutunud.
14. Lihtsaim viis veebi kaudu juurdepääsu saamiseks veebisaidile PhpMyAdmin on luua sümboliline link /usr/share/webapps/phpMyAdmin/ ja meie uue määratletud virtuaalse hosti tee vahele. (/srv/http ).
$ sudo ln -s /usr/share/webapps/phpMyAdmin/ /srv/http/
15. Pärast ülaltoodud käsu käivitamist värskendage oma lehte ja näete uue kausta phpMyAdmin ilmumist, kui autoindex lause on Nginxi virtuaalses hostis lubatud või suunate oma URL-i otse kausta PhpMyAdmin https:/arch_IP/phpMyAdmin .
16. Kui soovite brauseris phpMyAdmini stringi puhastada, muutke oma virtuaalsete hostide faile ja lisage järgmine sisu serveri blokeeringu alla.
location /phpmyadmin { rewrite ^/* /phpMyAdmin last; }
4. samm: lubage Nginxis parooliga kaitstud kataloog
Erinevalt Apache'ist kasutab Nginx parooliga kaitstud kataloogide lubamiseks moodulit HttpAuthBasic , kuid ei paku mingeid tööriistu krüptitud .htpasswd faili loomiseks.
17. Arch Linuxis kataloogi Nginx abil kataloogi paroolikaitse saavutamiseks installige Apache veebiserver ja kasutage selle tööriistu krüptitud .htaccess faili loomiseks.
$ sudo pacman -S apache
18. Pärast Apache installimist looge jaotises /etc/nginx/ uus kataloog nimega intuitiivselt passwd, kuhu salvestatakse fail .htpasswd , ja kasutage htpasswd käsk –c abil lülitab faili loomiseks sisse esimese kasutaja, seejärel kui soovite lisada rohkem kasutajaid, kasutage htpasswd ilma lülitita –c .
$ sudo mkdir /etc/nginx/passwd $ sudo htpasswd -c /etc/nginx/passwd/.htpasswd first_user $ sudo htpasswd /etc/nginx/passwd/.htpasswd second_user $ sudo htpasswd /etc/nginx/passwd/.htpasswd third_user
19. name-ip-ssl kaitsmiseks lisage virtuaalse hostijuure /srv/http/ serveeritud tee koos kõigi selle alamkaustade ja failidega allpool olevad juhised Virtuaalhostiserver blokeerib juurdirektiivi alusel ja osutab selle absoluutsele .htpasswd failitee.
auth_basic "Restricted Website"; auth_basic_user_file /etc/nginx/passwd/.htpasswd;
20. Pärast Nginxi teenuse taaskäivitamist värskendage lehte ja peaks ilmuma teie mandaate nõudev hüpik Nõutav autentimine .
Nüüd olete Nginxi Parooliga kaitstud kataloogid edukalt lubanud, kuid pidage meeles, et samal ajal kui teie süsteemi on installitud Apache veebiserver, veenduge, et see püsiks keelatud ja mingil juhul ärge käivitage seda, kuna see võib põhjustada Nginxiga vastuolus olevad sadamad.
5. samm: suunake HTTP ümber HTTPS-ile Nginxis
21. Kui soovite, et brauserid suunaksid kõik ebaturvalised HTTP-päringud automaatselt ümber HTTPS-protokolli, avage ja muutke oma mitte-ssl virtuaalset hostit ja lisage järgmine käsk serveri_nimi alla .
rewrite ^ https://$server_name$request_uri? permanent;
Kõik selles artiklis esitatud sätted on tehtud serverina toimiva süsteemi Arch Linux all, kuid enamik neist, eriti Nginxi konfiguratsioonifailidega seotud seaded, on mõningate erinevustega saadaval enamikus Linuxi süsteemides.