Како да поставите блокови на серверот Nginx (виртуелни домаќини) на Rocky Linux 9
Вовед
При користење на веб-серверот Nginx, серверските блокови (слично на виртуелните хостови во Apache) може да се користат за да се инкапсулираат детали за конфигурацијата и да се хостираат повеќе од еден домен на еден сервер.
Во овој водич, ќе научите како да ги конфигурирате блоковите на серверот во Nginx на серверот Rocky Linux 9.
Предуслови
Треба да користите корисник кој не е root со привилегии sudo
низ ова упатство. Ако немате конфигуриран корисник како овој, можете да креирате следејќи го нашиот првичен водич за поставување сервер Rocky Linux 9.
Исто така, ќе треба да имате инсталирано Nginx на вашиот сервер. Можете да го инсталирате како да инсталирате Nginx на Rocky Linux 9:
Чекор 1 - Поставување нови директориуми за корени на документи
За демонстративни цели, ова упатство ќе опфати поставување два домени со сервер Nginx. Имињата на домени користени во ова упатство се test.com. Ако веќе имате свои домени, можете да ги користите наместо нив.
Забелешка: За повеќе информации за регистрирање нов домен со DigitalOcean, погледнете ја нашата документација за производи за домени и DNS.
Ако немате две имиња на домени за конфигурирање, сега за сега можете да ги користите имињата на местата. Сè уште ќе можете да ја тестирате вашата конфигурација.
Стандардно, Nginx на Rocky Linux 9 има овозможен еден блок сервер. Конфигуриран е да опслужува документи надвор од директориумот на /usr/share/nginx/html
. Иако ова функционира добро за една локација, потребни ви се дополнителни директориуми за да опслужувате повеќе локации. Можете да го сметате директориумот /usr/share/nginx/html
за стандарден директориум што ќе се опслужува доколку барањето на клиентот не се совпаѓа со ниту една од другите ваши сајтови.
Можете да креирате структура на директориум во /usr/share/nginx
за секоја од вашите сајтови. Вистинската веб-содржина ќе биде сместена во директориумот html
во овие директориуми специфични за локацијата. Ова ви дава дополнителна флексибилност да креирате други директориуми поврзани со вашите сајтови по потреба.
Направете ги овие директориуми за секоја од вашите страници. Знамето -p
му кажува на mkdir
да ги создаде потребните родителски директориуми на патот:
- sudo mkdir -p /usr/share/nginx/example.com/html
- sudo mkdir -p /usr/share/nginx/test.com/html
Сега кога ги имате вашите директориуми, можете повторно да ја доделите сопственоста на веб директориумите на вашата нормална корисничка сметка. Ова ќе ви овозможи да им пишувате без дозволи за sudo
.
Може да ја користите променливата на животната средина $USER
за да доделите сопственост на сметката на која сте во моментов најавени (погрижете се да не сте најавени како root). Треба да ја доделите групната дозвола на овие директориуми на nginx
, сметка која автоматски се креира за Nginx на Rocky Linux, која ќе му овозможи на самиот веб-сервер да создава нови датотеки доколку е потребно од вашите веб-апликации. Командата chown
ви овозможува да ги правите и двете одеднаш:
- sudo chown -R $USER:nginx /usr/share/nginx/example.com/html
- sudo chown -R $USER:nginx /usr/share/nginx/test.com/html
Конечно, користете ја командата chmod
за да се осигурате дека и вашиот корисник и групата nginx
имаат целосни (7) дозволи, додека другите корисници имаат дозволи само за читање (5). За да дознаете повеќе за дозволите за Linux, погледнете во Основите на дозволите за Linux.
- sudo chmod -R 775 /usr/share/nginx
Структурата на вашиот директориум сега е конфигурирана и можете да продолжите понатаму.
Чекор 2 - Креирање на примерок страници за секоја локација
Сега кога сте ја поставиле структурата на директориумот, креирајте стандардна страница за секоја од вашите сајтови, така што ќе имате што да прикажете.
Користејќи го nano
или вашиот омилен текстуален уредувач, креирајте датотека index.html
во вашиот прв домен:
- nano /usr/share/nginx/example.com/html/index.html
Внатре во датотеката, креирајте веб-страница за слетување barebones што покажува на која локација пристапувате моментално. Ќе изгледа вака:
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>
Зачувајте ја и затворете ја датотеката кога ќе завршите. Ако користите nano
, притиснете Ctrl+X
, потоа кога ќе биде побарано, Y
и потоа Enter.
Бидејќи датотеката за вашата втора страница ќе биде иста за демонстративни цели, можете да ја копирате во вториот корен на документот вака:
- cp /usr/share/nginx/example.com/html/index.html /usr/share/nginx/test.com/html/
Сега, можете да ја отворите новата датотека во nano
или во омилениот уредувач на текст:
- nano /usr/share/nginx/test.com/html/index.html
Изменете го така што ќе се однесува на вашиот втор домен:
<html>
<head>
<title>Welcome to Test.com!</title>
</head>
<body>
<h1>Success! The test.com server block is working!</h1>
</body>
</html>
Зачувајте ја и затворете ја оваа датотека кога ќе завршите. Сега имате неколку страници за прикажување на посетителите на вашите два домени.
Чекор 3 - Креирање датотеки со блок на сервер за секој домен
Сега кога имате содржина за сервирање, треба да ги креирате блоковите на серверот што ќе му кажат на Nginx како да го направи тоа.
Стандардно, Nginx на Rocky Linux содржи еден \стандарден серверски блок во неговата главна конфигурациска датотека, nginx.conf
. Тој блок, внатре во таа датотека, изгледа вака:
…
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
…
Можете да го користите ова како шаблон за вашите сопствени конфигурации, кои можете да ги креирате во посебни датотеки. Започнете со дизајнирање на блокот на серверот на вашиот прв домен, кој потоа можете да го копирате за вториот домен и да ги направите потребните измени.
Креирање на датотеката со првиот сервер блок
Направете ја вашата прва датотека за конфигурација на блок на серверот во директориумот /etc/nginx/conf.d
. Главната конфигурациска датотека Nginx стандардно ја вклучува линијата include /etc/nginx/conf.d/*.conf;
, што значи дека ќе ги проверува датотеките што одговараат на таа шема за дополнителни серверски блокови.
Користете го вашиот омилен уредувач на текст со привилегии sudo
за да креирате конфигурациска датотека за вашиот прв домен:
- sudo nano /etc/nginx/conf.d/example.com.conf
Започнете со залепување во овој блок на серверот barebones:
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
Прво, потоа треба да ги прегледате директивите слушајте
. Само еден од вашите серверски блокови на серверот може да ја има овозможена опцијата default_server
. Ова одредува кој блок треба да опслужува барање ако бараното име_сервер
не се совпаѓа со ниту еден од достапните блокови на серверот. Ова не треба да се случува многу често во сценарија во реалниот свет, бидејќи посетителите ќе пристапуваат до вашата страница преку името на вашиот домен.
Можете да изберете да одредите една од вашите локации како \стандардно со вклучување на опцијата default_server
во директивата listen
или можете да го оставите стандардниот блок на серверот овозможен во nginx.conf
, кој ќе ја опслужува содржината на директориумот /usr/share/nginx/html
доколку бараниот хост не може да се најде.
Во ова упатство, ќе го оставите \стандардниот серверски блок за да опслужува барања кои не се совпаѓаат, така што вашата нова конфигурација example.com
нема да содржи default_server
:
server {
listen 80;
listen [::]:80;
. . .
}
Следното нешто што треба да се прилагоди е коренот на документот, наведен во директивата root
. Посочете го на коренот на документот на страницата што сте го создале:
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/example.com/html;
}
Следно, треба да го измените името на серверот
за да одговара на барањата за вашиот прв домен. Можете дополнително да додадете псевдоними што ви требаат да се совпаднат. Во ова упатство, ќе додадете псевдоним example.com
и www.example.com
за демонстрација.
Кога ќе завршите, вашата датотека ќе изгледа вака:
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Тоа е се што ви треба за конфигурација. Зачувајте ја и затворете ја датотеката за да излезете.
Креирање на втората датотека со блок на серверот
Сега кога ја имате почетната конфигурација на блок серверот, можете да ја користите како основа за вашата втора датотека. Копирајте го за да креирате нова датотека:
- sudo cp /etc/nginx/conf.d/example.com.conf /etc/nginx/conf.d/test.com.conf
Отворете ја новата датотека со привилегии sudo
во претпочитаниот уредувач:
- sudo nano /etc/nginx/conf.d/test.com.conf
Повторно, проверете дали не ја користите опцијата default_server
за директивата listen
во оваа датотека ако веќе сте ја користеле на друго место. Прилагодете ја директивата root
за да укаже на коренот на документот на вториот домен и приспособете го server_name
да одговара на името на доменот на втората локација (погрижете се да вклучите псевдоними).
Кога ќе завршите, вашата датотека најверојатно ќе изгледа вака:
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/test.com/html;
index index.html index.htm index.nginx-debian.html;
server_name test.com www.test.com;
location / {
try_files $uri $uri/ =404;
}
}
Зачувајте ја и затворете ја датотеката. Во следниот чекор, повторно ќе го вчитате Nginx за да ги одрази вашите промени.
Чекор 4 - Овозможување на блокови на вашиот сервер и рестартирање на Nginx
Сега имате овозможени три серверски блокови, кои се конфигурирани да одговараат врз основа на нивната директива слуша
и името на серверот
(можете да прочитате повеќе за тоа како Nginx ги обработува овие директиви овде):
example.com
: ќе одговори на барањата заexample.com
иwww.example.com
test.com
: ќе одговори на барањата заtest.com
иwww.test.com
стандардно
: ќе одговори на сите барања на портата 80 што не се совпаѓаат со другите два блока.
Зачувајте ја и затворете ја датотеката кога ќе завршите. Следно, тестирајте за да бидете сигурни дека нема синтаксички грешки во која било од вашите Nginx датотеки:
- sudo nginx -t
Ако не се пронајдени проблеми, рестартирајте го Nginx за да ги овозможите вашите промени:
- sudo systemctl restart nginx
Nginx сега треба да ги опслужува и двете ваши имиња на домени.
Чекор 5 - Измена на датотеката со локални домаќини за тестирање (изборно)
Ако не сте користеле имиња на домени што ги поседувате и кои всушност укажуваат на IP-адресата на овој сервер, а наместо тоа сте користеле вредности на заштитните места, можете да ја измените датотеката домаќини на вашиот локален компјутер за да ви овозможи привремено да ја тестирате вашата Конфигурација на блок на серверот Nginx.
Ова нема да им дозволи на другите посетители правилно да ја гледаат вашата страница, но ќе ви даде можност самостојно да стигнете до секоја локација и да ја тестирате вашата конфигурација. Ова функционира со пресретнување на барања кои обично одат до DNS за да се решат имињата на домени. Наместо тоа, можете да ја поставите датотеката на домаќините автоматски да хардкодира одредени домени на одредени оддалечени адреси.
Забелешка: Проверете дали работите на вашиот локален компјутер во текот на овие чекори, а не на далечински сервер. Ќе треба да имате пристап до root, да бидете член на административната група или на друг начин да можете да уредувате системски датотеки за да го направите ова.
Ако работите во Mac или Linux околина, вашата датотека на домаќините се наоѓа на /etc/hosts
:
- sudo nano /etc/hosts
Ако сте на Windows, вашата датотека на домаќините се наоѓа на C:\Windows\System32\drivers\etc\hosts
.
Треба да ја знаете јавната IP адреса на вашиот сервер и домените што сакате да ги насочите до серверот. Претпоставувајќи дека јавната IP адреса на вашиот сервер е 203.0.113.5
, линиите што ги додавате во вашата датотека би изгледале вака:
127.0.0.1 localhost
. . .
203.0.113.5 example.com www.example.com
203.0.113.5 test.com www.test.com
Ова ќе ги пресретне сите барања за example.com
и test.com
и ќе ги испрати до вашиот сервер, што ќе ви треба ако всушност не ги поседувате домените што го тестирате.
Зачувајте ја и затворете ја датотеката кога ќе завршите.
Чекор 6 - Тестирање на вашите резултати
Сега кога сте сите поставени, треба да тестирате дали блоковите на вашиот сервер функционираат правилно. Можете да го направите тоа со посета на домените во вашиот веб-прелистувач:
http://example.com
Треба да видите страница што изгледа вака:
Ако го посетите вашето второ име на домен, треба да видите малку поинаква локација:
http://test.com
Ако и двете од овие страници работат, успешно сте конфигурирале два независни серверски блока со Nginx.
Во овој момент, ако сте ја прилагодиле датотеката hosts
на вашиот локален компјутер за тестирање, веројатно ќе сакате да ги отстраните линиите што сте ги додале.
Ако ви треба пристап до името на доменот до вашиот сервер за јавна страница, веројатно ќе сакате да купите име на домен за секоја ваша локација.
Заклучок
Сега треба да имате можност да креирате серверски блокови за секој домен што сакате да го хостирате од истиот сервер. Нема вистински ограничувања за бројот на серверски блокови што можете да ги креирате, сè додека вашиот хардвер може да се справи со сообраќајот.
Следно, можеби ќе сакате да научите како да поставите автентикација со лозинка со Nginx.