Jak zainstalować Nginx z wirtualnymi hostami i certyfikatem SSL

Jak zainstalować Nginx z wirtualnymi hostami i certyfikatem SSL

Nginx (Krótkie dla Silnik-X) to bezpłatny, open source, potężny, wysokowydajny i skalowalny serwer proxy HTTP i odwrotny serwer proxy TCP/UDP. Jest łatwy w użyciu i konfiguracji, z prostym językiem konfiguracji. Nginx jest teraz preferowanym oprogramowaniem serwera WWW do zasilania mocno załadowanych witryn, ze względu na jego skalowalność i wydajność.

W tym artykule omówi się, jak używać Nginx jako serwera HTTP, skonfiguruj go tak, aby obsługiwał treść sieci i konfigurować wirtualne hosty oparte na nazwiskach oraz tworzyć i instaluj SSL dla bezpiecznych transmisji danych, w tym samozagłady certyfikat na Ubuntu i Centos.

Jak zainstalować serwer WWW Nginx

Pierwszy zacznij od zainstalowania pakietu Nginx z oficjalnych repozytoriów za pomocą menedżera pakietów, jak pokazano.

------------ Na Ubuntu ------------ $ sudo apt aktualizacja $ sudo apt instal nginx ------------ Na Centos ------------ $ sudo yum aktualizacja $ sudo yum instaluj epel-uwalanie $ sudo yum instaluj nginx 

Po zainstalowaniu pakietu Nginx musisz na razie uruchomić Usługę, włączyć go do automatycznego startowania w czasie rozruchu i wyświetlić status, używając następujących poleceń. Zwróć to uwagę na Ubuntu, Należy go uruchomić i włączyć automatycznie, gdy pakiet jest wstępnie skonfigurowany.

$ sudo systemctl start nginx $ sudo systemctl włącz nginx $ sudo systemCtl Status nginx 
Rozpocznij i sprawdź status Nginx

W tym momencie serwer WWW Nginx powinien być uruchomiony, możesz zweryfikować status za pomocą polecenia NetStat.

$ sudo netstat -tlpn | GREP Nginx 
Sprawdź status portu Nginx

Jeśli Twój system ma włączoną zaporę ogniową, musisz otworzyć port 80 I 443 zezwolić Http I Https Ruch odpowiednio, przez to, uruchamiając.

------------ Na Centos ------------ $ sudo firewall-cmd --Permanent --add-port = 80/tcp $ sudo firewall-cmd --Permanent --add-port = 443/tcp $ sudo firewall-cmd--relad ------------ Na Ubuntu ------------ $ sudo ufw Zezwalaj na 80/tcp $ sudo ufw zezwolić 443/tcp $ sudo ufw 

Idealną metodą testowania instalacji Nginx i sprawdzania, czy jest ona uruchomiona i może obsługiwać strony internetowe, jest otwarcie przeglądarki internetowej i wskazanie IP serwera.

http: // your-ip-address lub http: // Your-Domain.com 

Instalacja robocza powinna być wskazana przez następujący ekran.

Sprawdź stronę internetową Nginx

Jak skonfigurować serwer WWW Nginx

Pliki konfiguracyjne Nginx znajdują się w katalogu /etc/nginx a globalny plik konfiguracyjny znajduje się pod adresem /etc/nginx/nginx.conf zarówno na Centos i Ubuntu.

Nginx składa się z modułów kontrolowanych przez różne opcje konfiguracyjne, znane jako dyrektywy. A dyrektywa może być proste (w formie nazwa i wartości zakończone ;) Lub blok (ma dodatkowe instrukcje dołączone za pomocą ). A dyrektywa blokowa, która zawiera inne dyrektywy, nazywa się kontekst.

Wszystkie dyrektywy są kompleksowo wyjaśnione w dokumentacji Nginx na stronie internetowej projektu. Więcej informacji możesz odwołać się do tego.

Jak obsługiwać zawartość statyczną za pomocą Nginx w trybie samodzielnym

Na poziomie fundamentalnym Nginx może być używany do obsługi treści statycznych, takich jak HTML i pliki multimediów, w trybie samodzielnym, w którym używany jest tylko domyślny blok serwerowy (analogiczny do Apache, w którym nie skonfigurowano hostów wirtualnych).

Zaczniemy od krótkiego wyjaśnienia struktury konfiguracji w głównym pliku konfiguracyjnym.

 $ sudo vim/etc/nginx/nginx.conf 

Jeśli spojrzysz na ten plik konfiguracyjny Nginx, struktura konfiguracji powinna pojawić się następująco. Cały ruch internetowy jest obsługiwany w kontekście HTTP.

użytkownik nginx; Worker_processes 1;… error_log/var/log/nginx/błąd.Log ostrzega; PID/var/run/nginx.PID;… wydarzenia … http serwer … . … 

Poniżej znajduje się przykładowa konfiguracja Nginx (/etc/nginx/nginx.conf) Plik, w którym powyższy blok HTTP zawiera dyrektywę, która informuje Nginx, gdzie znaleźć pliki konfiguracyjne witryny (konfiguracje hosta wirtualnego).

Plik konfiguracyjny Nginx
Użytkownik WWW-DATA; robotnik_processes auto; PID /run /nginx.pid; zdarzenia robotnik_connections 768; # multi_Accept on;  http include/etc/nginx/mime.typy; default_type Application/Octet-Stream; obejmują/etc/nginx/mim.typy; default_type Application/Octet-Stream; access_log/var/log/nginx/access.dziennik; error_log/var/log/nginx/błąd.dziennik; Sendfile na; #tcp_nopush on; KeepAlive_Timeout 65; #Gzip on; obejmują/etc/nginx/conf.D/*.conf;  

Zwróć to uwagę na Ubuntu, Znajdziesz również dodatkową dyrektywę (obejmują/etc/nginx/Sites-obsługę/*;), gdzie katalog /etc/nginx/witryny/obsługę/ Przechowuje symlinki do plików konfiguracyjnych stron internetowych utworzone w /etc/nginx/witryny-dostępny/, Aby włączyć strony. A usunięcie SymLink wyłącza tę konkretną witrynę.

Na podstawie źródła instalacji znajdziesz domyślny plik konfiguracyjny witryny pod adresem /etc/nginx/conf.d/domyślnie.conf (Jeśli zainstalowałeś z oficjalnego Nginx repozytorium i Epel) Lub /etc/nginx/witryny-obsługuje/domyślny (Jeśli zainstalowałeś z repozytoriów Ubuntu).

To jest nasz przykładowy blok serwera Nginx zlokalizowany w /etc/nginx/conf.d/domyślnie.conf w systemie testowym.

serwer posłuchaj 80 default_server; Posłuchaj [::]: 80 default_server; Nazwa serwera _; root/var/www/html/; indeks indeksu.html; lokalizacja / try_files $ uri $ uri / = 404;  

Krótkie wyjaśnienie dyrektyw w powyższej konfiguracji:

  • Słuchać: Określa Port Serwer słucha na.
  • Nazwa serwera: definiuje nazwę serwera, którą mogą być dokładne nazwy, nazwy dziki lub wyrażenia regularne.
  • źródło: Określa katalog, z którego Nginx będzie obsługiwał strony internetowe i inne dokumenty.
  • indeks: Określa typ (ów) plików indeksu, które mają być obsługiwane.
  • Lokalizacja: używane do przetwarzania żądań dla określonych plików i folderów.

Z przeglądarki internetowej, gdy wskazujesz serwer za pomocą Nazwa hosta LocalHost lub jego adres IP, przetwarza żądanie i obsługuje plik /var/www/html/index.html, i natychmiast zapisuje zdarzenie do dziennika dostępu (/var/log/nginx/access.dziennik) z 200 (OK) odpowiedź. W przypadku błędu (zdarzenie nieudane) rejestruje komunikat w dzienniku błędów (/var/log/nginx/błąd.dziennik).

Test Nginx Domyślna strona

Aby dowiedzieć się więcej o logowaniu Nginx, Możesz odwołać się do skonfigurowania formatów niestandardowego dostępu lub dziennika błędów w Nginx.

Zamiast korzystać z domyślnych plików dziennika, możesz zdefiniować niestandardowe pliki dziennika dla różnych stron internetowych, jak przyjrzymy się później, zgodnie z sekcją „Konfigurowanie wirtualnych hostów opartych na nazwiskach (bloki serwerowe)”.

Jak ograniczyć dostęp do strony internetowej za pomocą Nginx

Aby ograniczyć dostęp do Twojej witryny/aplikacji lub niektórych jej części, możesz skonfigurować podstawowe uwierzytelnianie HTTP. Można to zasadniczo używać w celu ograniczenia dostępu do całego serwera HTTP, poszczególnych bloków serwerów lub bloków lokalizacji.

Zacznij od utworzenia pliku, który będzie przechowywał dane poświadczenia dostępu (Nazwa użytkownika Hasło) za pomocą htpasswd pożytek.

 $ yum instaluj httpd-tools #RHEL/CENTOS $ sudo apt Zainstaluj apache2-Utils #debian/ubuntu 

Jako przykład dodajmy administratora użytkownika do tej listy (możesz dodać jak najwięcej użytkowników), gdzie -C Opcja służy do określenia pliku hasła i -B Aby zaszyfrować hasło. Kiedy trafisz [Wchodzić], Zostaniesz poproszony o wpisanie hasła użytkowników:

$ sudo htpasswd -bc/etc/nginx/conf.D/.HTPASSWD Admin 

Następnie przypiszmy odpowiednie uprawnienia i własność do pliku hasła (zastąp użytkownika i grupy nginx www-data na Ubuntu).

$ sudo chmod 640/etc/nginx/conf.D/.htpasswd $ sudo chown nginx: nginx/etc/nginx/conf.D/.htpasswd 

Jak wspomniano wcześniej, możesz ograniczyć dostęp do swojej serwera internetowego, pojedynczej witryny (za pomocą bloku serwera) lub konkretnego katalogu lub pliku. Do osiągnięcia tego można zastosować dwie przydatne dyrektywy:

  • Auth_basic - Włącza sprawdzanie poprawności nazwy użytkownika i hasła za pomocą „Podstawowe uwierzytelnianie HTTP" protokół.
  • Auth_basic_user_file - Określa plik poświadczenia.

Jako przykład pokażemy, jak chronić hasło katalogu /var/www/html/chroniony.

serwer posłuchaj 80 default_server; Server_name LocalHost; root/var/www/html/; indeks indeksu.html; lokalizacja / try_files $ uri $ uri / = 404;  lokalizacja / chroniony / auth_basic „Ograniczony dostęp!"; auth_basic_user_file/etc/nginx/conf.D/.htpasswd;  

Teraz zapisz zmiany i uruchom ponownie usługę Nginx.

$ sudo systemctl restart nginx 

Następnym razem, gdy wskazasz przeglądarkę na powyższy katalog (http: // localhost/chroniony) Zostaniesz poproszony o wprowadzenie swoich poświadczeń logowania (nazwa użytkownika Admin i wybrane hasło).

Udany login umożliwia dostęp do zawartości katalogu, w przeciwnym razie otrzymasz A „Wymagane wymagane autoryzacja 401" błąd.

Jak konfigurować wirtualne hosty oparte na nazwach (bloki serwera) w Nginx

Kontekst serwera umożliwia przechowywanie wielu domen/witryn w tym samym maszynie fizycznym lub wirtualnym prywatny serwer (VPS). Wiele bloków serwerów (reprezentujących hosty wirtualne) można zadeklarować w kontekście HTTP dla każdej witryny/domeny. Nginx decyduje, który serwer przetwarza żądanie na podstawie otrzymanego nagłówka żądania.

Wykazamy tę koncepcję przy użyciu następujących domen manekina, z których każda znajduje się w określonym katalogu:

  • neweteCmint.com - /var/www/html/neweteCmint.com/
  • Welovelinux.com - /var/www/html/welovelinux.com/

Następnie przypisz odpowiednie uprawnienia w katalogu dla każdej witryny.

$ sudo chmod -r 755/var/www/html/neweteCmint.com/public_html $ sudo chmod -r 755/var/www/html/welovelinux.com/public_html 

Teraz utwórz próbkę indeks.html plik w każdym public_html informator.

  www.neweteCmint.com   

To jest strona indeksu www.neweteCmint.com

Następnie utwórz pliki konfiguracyjne bloku serwera dla każdej witryny wewnątrz /etc/httpd/conf.D informator.

$ sudo vi/etc/nginx/conf.d/neweteCmint.com.conf $ sudo vi/etc/nginx/conf.D/Welovelinux.com.conf 

Dodaj następującą deklarację bloku serwera w neweteCmint.com.conf plik.

neweteCmint.com.conf
serwer Słuchaj 80; Server_name neweTecMint.com; root/var/www/html/neweteCmint.com/public_html; indeks indeksu.html; lokalizacja / try_files $ uri $ uri / = 404;  

Następnie dodaj następującą deklarację bloku serwera w Welovelinux.com.conf plik.

Welovelinux.com.conf
serwer Słuchaj 80; Server_name Welovelinux.com; root/var/www/html/welovelinux.com/public_html; indeks indeksu.html; lokalizacja / try_files $ uri $ uri / = 404;  

Aby zastosować ostatnie zmiany, uruchom ponownie serwer WWW Nginx.

$ sudo systemctl restart nginx 

i wskazanie serwera WWW na powyższe adresy powinno sprawić, że zobaczysz główne strony domen manekina.

http: // neweteCmint.com http: // welovelinux.com 
Przetestuj wirtualne witryny hostów nginx

Ważny: Jeśli masz Selinux Włączone, jego domyślna konfiguracja nie pozwala Nginx dostępu do plików poza dobrze znanymi autoryzowanymi lokalizacjami (takie jak /etc/nginx do konfiguracji, /var/log/nginx dla dzienników, /var/www/html dla plików internetowych itp.).

Możesz sobie z tym poradzić, wyłączając Selinux lub ustawiając prawidłowy kontekst bezpieczeństwa. Aby uzyskać więcej informacji, patrz niniejszy przewodnik: Korzystanie z Nginx i Nginx Plus z Selinux na stronie Nginx Plus.

Jak zainstalować i skonfigurować SSL z Nginx

SSL Certyfikaty pomagają włączyć bezpieczny HTTP (Https) w Twojej witrynie, która jest niezbędna do ustanowienia zaufanego/bezpiecznego połączenia między użytkownikami końcowymi a serwerem poprzez szyfrowanie informacji przesyłanych do lub w witrynie lub w Twojej witrynie.

Omówimy sposób utworzenia i zainstalowania samowystarczalnego certyfikatu oraz wygenerowanie żądania podpisania certyfikatu (CSR) w celu uzyskania certyfikatu SSL od organu certyfikatu (Ca), używać z Nginx.

Self-podpisane certyfikaty są bezpłatne do tworzenia i praktycznie dobre do celów testowych i usług wewnętrznych wyłącznie w sieci LAN. W przypadku serwerów skierowanych do publicznych zaleca się korzystanie z certyfikatu wydanego przez CA (na przykład zaszyfruj) w celu utrzymania jego autentyczności.

Aby utworzyć samowystarczalny certyfikat, najpierw utwórz katalog, w którym Twoje certyfikaty będą przechowywane.

$ sudo mkdir/etc/nginx/ssl-CERTS/ 

Następnie wygeneruj swój samodzielny certyfikat i klucz za pomocą Openssl Narzędzie wiersza poleceń.

$ sudo openssl req -x509 -nodes -Days 365 -Newkey RSA: 2048 -Keyout/etc/nginx/ssl -certs/nginx.klucz -ut/etc/nginx/ssl -CERTS/nginx.crt 

Opiszmy krótko opcje użyte w powyższym poleceniu:

  • Req -x509 - pokazuje, że tworzymy certyfikat x509.
  • -węzły (no des) - oznacza „nie szyfruj klucza”.
  • -Dni 365 - Określa liczbę dni, w których certyfikat będzie ważny.
  • -Newkey RSA: 2048 - Określa, że ​​klucz wygenerowany za pomocą algorytmu RSA powinien być 2048-bitowy.
  • -Keyout/etc/nginx/ssl-CERTS/nginx.klucz - Określa pełną ścieżkę klucza RSA.
  • -Out/etc/nginx/ssl-CERTS/nginx.crt - Określa pełną ścieżkę certyfikatu.
Utwórz certyfikat SSL i klucz dla Nginx

Następnie otwórz swój wirtualny plik konfiguracyjny hosta i dodaj następujące wiersze do deklaracji bloku serwera, słuchanie w porcie 443. Przetestujemy z wirtualnym plikiem hosta /etc/nginx/conf.d/neweteCmint.com.conf.

$ sudo vi/etc/nginx/conf.d/neweteCmint.com.conf 

Następnie dodaj dyrektywę SSL do pliku konfiguracyjnego Nginx, powinna wyglądać podobnie do poniżej.

serwer Słuchaj 80; Posłuchaj [::]: 80; Posłuchaj 443 SSL; Posłuchaj [::]: 443 SSL; SSL on; SSL_Certificate/etc/nginx/ssl-CERTS/nginx.crt; ssl_trusted_certificate/etc/nginx/ssl-certs/nginx.crt; SSL_Certificate_Key/etc/nginx/ssl-certs/nginx.klucz; Server_name neweTecMint.com; root/var/www/html/neweteCmint.com/public_html; indeks indeksu.html; lokalizacja / try_files $ uri $ uri / = 404;  

Teraz uruchom ponownie nginx i skieruj przeglądarkę na następujący adres.

https: // www.neweteCmint.com 
Sprawdź stronę Nginx SSL

Jeśli chcesz kupić certyfikat SSL z CA, musisz wygenerować żądanie podpisywania certyfikatu (CSR), jak pokazano.

$ sudo openssl req -Newkey RSA: 2048 -nodes -keyout/etc/nginx/ssl -CERTS/przykład.com.klucz -ut/etc/nginx/ssl -CERTS/przykład.com.CSR 

Możesz także utworzyć CSR z istniejącego klucza prywatnego.

$ sudo openssl req -key/etc/nginx/ssl -CERTS/przykład.com.Key -New -out/etc/nginx/ssl -CERTS/przykład.com.CSR 

Następnie musisz wysłać CSR to jest generowane do Ca Aby poprosić o wydanie certyfikatu SSL podpisanego przez CA. Po otrzymaniu certyfikatu z CA możesz go skonfigurować, jak pokazano powyżej.

Przeczytaj także: Najlepszy przewodnik po zabezpieczeniu, stwardnienia i poprawie wydajności serwera WWW Nginx

Streszczenie

W tym artykule wyjaśniliśmy, jak zainstalować i skonfigurować Nginx; Omówił sposób konfigurowania wirtualnego hostingu opartego na nazwach z SSL w celu zabezpieczenia transmisji danych między serwerem WWW a klientem.

Jeśli doświadczyłeś jakichkolwiek niepowodzeń podczas procesu instalacji/konfiguracji Nginx lub masz jakieś pytania lub komentarze, użyj poniższego formularza opinii, aby się z nami skontaktować.