Како да поставите блокови на серверот 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 да ги создаде потребните родителски директориуми на патот:

  1. sudo mkdir -p /usr/share/nginx/example.com/html
  2. sudo mkdir -p /usr/share/nginx/test.com/html

Сега кога ги имате вашите директориуми, можете повторно да ја доделите сопственоста на веб директориумите на вашата нормална корисничка сметка. Ова ќе ви овозможи да им пишувате без дозволи за sudo.

Може да ја користите променливата на животната средина $USER за да доделите сопственост на сметката на која сте во моментов најавени (погрижете се да не сте најавени како root). Треба да ја доделите групната дозвола на овие директориуми на nginx, сметка која автоматски се креира за Nginx на Rocky Linux, која ќе му овозможи на самиот веб-сервер да создава нови датотеки доколку е потребно од вашите веб-апликации. Командата chown ви овозможува да ги правите и двете одеднаш:

  1. sudo chown -R $USER:nginx /usr/share/nginx/example.com/html
  2. sudo chown -R $USER:nginx /usr/share/nginx/test.com/html

Конечно, користете ја командата chmod за да се осигурате дека и вашиот корисник и групата nginx имаат целосни (7) дозволи, додека другите корисници имаат дозволи само за читање (5). За да дознаете повеќе за дозволите за Linux, погледнете во Основите на дозволите за Linux.

  1. sudo chmod -R 775 /usr/share/nginx

Структурата на вашиот директориум сега е конфигурирана и можете да продолжите понатаму.

Чекор 2 - Креирање на примерок страници за секоја локација

Сега кога сте ја поставиле структурата на директориумот, креирајте стандардна страница за секоја од вашите сајтови, така што ќе имате што да прикажете.

Користејќи го nano или вашиот омилен текстуален уредувач, креирајте датотека index.html во вашиот прв домен:

  1. 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.

Бидејќи датотеката за вашата втора страница ќе биде иста за демонстративни цели, можете да ја копирате во вториот корен на документот вака:

  1. cp /usr/share/nginx/example.com/html/index.html /usr/share/nginx/test.com/html/

Сега, можете да ја отворите новата датотека во nano или во омилениот уредувач на текст:

  1. 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 за да креирате конфигурациска датотека за вашиот прв домен:

  1. 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;
        }
}

Тоа е се што ви треба за конфигурација. Зачувајте ја и затворете ја датотеката за да излезете.

Креирање на втората датотека со блок на серверот

Сега кога ја имате почетната конфигурација на блок серверот, можете да ја користите како основа за вашата втора датотека. Копирајте го за да креирате нова датотека:

  1. sudo cp /etc/nginx/conf.d/example.com.conf /etc/nginx/conf.d/test.com.conf

Отворете ја новата датотека со привилегии sudo во претпочитаниот уредувач:

  1. 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 датотеки:

  1. sudo nginx -t

Ако не се пронајдени проблеми, рестартирајте го Nginx за да ги овозможите вашите промени:

  1. sudo systemctl restart nginx

Nginx сега треба да ги опслужува и двете ваши имиња на домени.

Чекор 5 - Измена на датотеката со локални домаќини за тестирање (изборно)

Ако не сте користеле имиња на домени што ги поседувате и кои всушност укажуваат на IP-адресата на овој сервер, а наместо тоа сте користеле вредности на заштитните места, можете да ја измените датотеката домаќини на вашиот локален компјутер за да ви овозможи привремено да ја тестирате вашата Конфигурација на блок на серверот Nginx.

Ова нема да им дозволи на другите посетители правилно да ја гледаат вашата страница, но ќе ви даде можност самостојно да стигнете до секоја локација и да ја тестирате вашата конфигурација. Ова функционира со пресретнување на барања кои обично одат до DNS за да се решат имињата на домени. Наместо тоа, можете да ја поставите датотеката на домаќините автоматски да хардкодира одредени домени на одредени оддалечени адреси.

Забелешка: Проверете дали работите на вашиот локален компјутер во текот на овие чекори, а не на далечински сервер. Ќе треба да имате пристап до root, да бидете член на административната група или на друг начин да можете да уредувате системски датотеки за да го направите ова.

Ако работите во Mac или Linux околина, вашата датотека на домаќините се наоѓа на /etc/hosts:

  1. 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.