Jak zainstalować Nginx z wirtualnymi hostami i certyfikatem SSL
- 878
- 63
- Pan Jeremiasz Więcek
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 nginxRozpocznij 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 NginxSprawdź 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ą NginxJak 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 NginxUż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 stronaAby 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.comTo 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.confserwer 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.confserwer 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.comPrzetestuj 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.
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.comSprawdź 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ć.
- « Jak ograniczyć prędkość pobierania plików za pomocą WGET w Linux
- CLOC - zlicz linie kodu w wielu językach programowania »