За относително кратък период от време, откакто беше разработен и наличен (малко над 10 години), Nginx отбеляза устойчив и стабилен растеж сред уеб сървърите поради високата си производителност и ниско използване на паметта.
Базиран на имена и IP базиран виртуален хостинг на NginxТъй като Nginx е безплатен софтуер с отворен код, той е възприет от хиляди администратори на уеб сървъри по целия свят, не само в Linux и *nix сървъри, но и в Microsoft Windows .
Не пропускайте: Виртуален хостинг, базиран на име и IP на Apache
За тези от нас, които са свикнали най-много с Apache, Nginx може да има доста стръмна крива на обучение (поне моят случай беше такъв), но със сигурност се отплаща, след като настроите няколко сайта и започнете да виждате статистиката за трафика и използването на ресурси .
В тази статия ще обясним как да използвате Nginx за настройка на базиран на имена и IP виртуален хостинг в сървъри CentOS/RHEL 7 и Debian 8 и производни, като се започне с Ubuntu 15.04 и неговите отделни продукти.
Нашият тестов сценарий за тази статия е както следва: Операционна система: Debian 8 Jessie сървър [IP 192.168.0.25] Шлюз: Рутер [IP 192.168.0.1] Уеб сървър: Nginx 1.6.2-5 Фиктивни домейни: www.tecmintlovesnginx.com и www .nginxmeanspower.com.Ако все още не сте го направили, моля, инсталирайте Nginx, преди да продължите. Ако имате нужда от помощ, за да започнете, бързо търсене на nginx в този сайт ще ви върне няколко статии по тази тема. Кликнете върху иконата на лупа в горната част на тази страница и потърсете ключова дума nginx. Ако не знаете как да търсите статии в този сайт, не се притеснявайте, тук сме добавили връзки към статиите за nginx, просто преминете и го инсталирайте според съответните дистрибуции на Linux.
Инсталирайте и компилирайте Nginx от източници в RHEL/CentOS 7Инсталирайте Nginx уеб сървър на Debian 8Инсталирайте Nginx с MariaDB и PHP/PHP-FPM на Fedora 23Инсталирайте Nginx уеб сървър на Ubuntu 15.10 Server/DesktopPassword Защитете Nginx уебсайт директорииСлед това се пригответе да продължите с останалата част от този урок.
Както съм сигурен, че вече знаете, виртуалният хост е уебсайт, който се обслужва от Nginx в един облачен VPS или физически сървър. В документите на Nginx обаче ще намерите вместо това термина „сървърни блокове“, но те са основно едно и също нещо, наречено с различни имена.
Първата стъпка за настройка на виртуални хостове е да създадете един или повече сървърни блокове (в нашия случай ще създадем два, по един за всеки фиктивен домейн) в основния конфигурационен файл (/etc/nginx/nginx.conf) или вътре /etc/nginx/sites-available.
Въпреки че името на конфигурационните файлове в тази директория (sites-available) може да бъде зададено на каквото пожелаете, добра идея е да използвате имената на домейните и в допълнение избрахме да добавим разширението .conf към показват, че това са конфигурационни файлове.
Тези сървърни блокове могат да бъдат относително сложни, но в основната си форма те се състоят от следното съдържание:
В /etc/nginx/sites-available/tecmintlovesnginx.com.conf:
сървър {listen 80;server_nametecmintlovesnginx.com www.tecmintlovesnginx.com;access_log/var/www/logs/tecmintlovesnginx.access.log;error_log/var/www/logs/tecmintlovesnginx.error.log грешка; root /var/www/tecmintlovesnginx.com/public_html;indexindex.html index.htm;}В /etc/nginx/sites-available/nginxmeanspower.com.conf:
сървър {listen 80;server_namenginxmeanspower.com www.nginxmeanspower.com;access_log/var/www/logs/nginxmeanspower.access.log;error_log/var/www/logs/nginxmeanspower.error.log грешка;root /var/www/nginxmeanspower .com/public_html;indexindex.html index.htm;}Можете да използвате горните блокове, за да започнете да настройвате вашите виртуални хостове, или можете да създадете файловете с основния скелет от /etc/nginx/sites-available/ по подразбиране (Debian) или /etc/nginx/nginx.conf.default (CentOS).
След като бъдат копирани, променете техните разрешения и собственост:
# chmod 660/etc/nginx/sites-available/tecmintlovesnginx.com.conf# chmod 660/etc/nginx/sites-available/nginxmeanspower.com.confDebian и производни# chgrp www-data/etc/nginx/sites-available/ tecmintlovesnginx.com.conf# chgrp www-data/etc/nginx/sites-available/nginxmeanspower.com.confCentOS и RHEL# chgrp nginx/etc/nginx/sites-available/tecmintlovesnginx.com.conf# chgrp nginx/etc/nginx /sites-available/nginxmeanspower.com.confКогато сте готови, трябва да изтриете примерния файл или да го преименувате на нещо друго, за да избегнете объркване или конфликти.
Моля, имайте предвид, че ще трябва също да създадете директория за регистрационните файлове (/var/www/logs) и да дадете на потребителя на Nginx (nginx или www-data, в зависимост от това дали използвате CentOS или Debian) да чете и записва разрешения над него:
# mkdir /var/www/logs# chmod -R 660 /var/www/logs# chgrp/var/www/logsВиртуалните хостове вече трябва да бъдат активирани чрез създаване на символна връзка към този файл в директорията с активирани сайтове :
# ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf# ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.confСлед това създайте примерен html файл с име index.html вътре в /var/www//public_html за всеки от виртуалните хостове (заменете при необходимост). Променете следния код, ако е необходимо:
Tecmint обича NginxTecmint обича Nginx!
Накрая тествайте конфигурацията на Nginx и стартирайте уеб сървъра. Ако има грешки в конфигурацията, ще бъдете подканени да ги коригирате:
# nginx -t && systemctl стартирайте nginxCheck Nginx Configurationи добавете следните записи към вашия /etc/hosts файл във вашата локална машина като основна стратегия за разрешаване на имена:
192.168.0.25 tecmintlovesnginx.com192.168.0.25 nginxmeanspower.comСлед това стартирайте уеб браузър и отидете на URL адресите, изброени по-горе:
Проверете виртуалните хостове, базирани на име на NginxЗа да добавите повече виртуални хостове в Nginx, просто повторете описаните по-горе стъпки толкова пъти, колкото е необходимо.
За разлика от базираните на имена виртуални хостове, където всички хостове са достъпни чрез един и същ IP адрес, IP-базираните виртуални хостове изискват различна комбинация IP:порт всеки .
Това позволява на уеб сървъра да връща различни сайтове в зависимост от IP адреса и порта, на който е получена заявката. Тъй като виртуалните хостове, базирани на имена, ни дават предимството да споделяме IP адрес и порт, те са стандартът за уеб сървъри с общо предназначение и трябва да бъдат настройката по избор, освен ако вашата инсталирана версия на Nginx не поддържа индикация за име на сървър (SNI) , или защото е НАИСТИНА остаряла версия, или защото е компилиран без опцията за компилиране –with-http_ssl_module.
Ако,
# nginx -Vне връща маркираните опции по-долу:
Проверете версията и модулите на Nginxще трябва да актуализирате вашата версия на Nginx или да я прекомпилирате в зависимост от първоначалния ви метод на инсталиране. За компилиране на Nginx следвайте статията по-долу:
Инсталирайте и компилирайте Nginx от източници в RHEL/CentOS 7Ако приемем, че сме готови, трябва да отбележим, че друга предпоставка за базирани на IP виртуални хостове е наличието на отделни IP адреси – или чрез присвояването им на отделни мрежови интерфейси , или чрез използването на виртуални IP адреси (известни също като IP aliasing).
За да извършите IP псевдоним в Debian (ако приемем, че използвате eth0), редактирайте /etc/network/interfaces, както следва:
Debian and Derivativesauto eth0:1iface eth0:1 inet staticaddress 192.168.0.25netmask 255.255.255.0network 192.168.0.0broadcast 192.168.0.255gateway 192.168.0.1auto eth0:2iface eth0:2 inet sta ticaddress 192.168.0.26мрежова маска 255.255.255.0мрежа 192.168.0.0 излъчване 192.168.0.255gateway 192.168.0.1В примера по-горе ние създаваме две виртуални NIC от eth0: eth0:1 (192.168.0.25) и eth0:2 (192.168.0.26).
CentOS и RHELВ CentOS преименувайте /etc/sysconfig/network-scripts/ifcfg-enp0s3 като ifcfg-enp0s3:1 и направете копие като ifcfg-enp0s3:2 и след това просто променете съответно следните редове:
DEVICE="enp0s3:1"IPADDR=192.168.0.25и
DEVICE="enp0s3:2"IPADDR=192.168.0.26След като сте готови, рестартирайте мрежовата услуга:
# systemctl restart networkingСлед това направете следните промени в сървърните блокове, дефинирани по-рано в тази статия:
В /etc/nginx/sites-available/tecmintlovesnginx.com.conf:
слушайте 192.168.0.25:80В /etc/nginx/sites-available/nginxmeanspower.com.conf:
слушайте 192.168.0.26:80Накрая рестартирайте Nginx, за да влязат в сила промените.
# systemctl рестартирайте nginxи не забравяйте съответно да актуализирате вашите локални /etc/hosts:
192.168.0.25 tecmintlovesnginx.com192.168.0.26 nginxmeanspower.comПо този начин всяка заявка, направена до 192.168.0.25 и 192.168.0.26 на порт 80, ще върне съответно tecmintlovesnginx.com и nginxmeanspower.com:
Проверете Nginx IP базиран виртуален хостКакто можете да видите на изображенията по-горе, сега имате два IP базирани виртуални хоста, използващи единствения NIC във вашия сървър с два различни IP псевдонима.
В този урок обяснихме как да настроите както базирани на имена, така и базирани на IP виртуални хостове в Nginx. Въпреки че вероятно ще искате да използвате първата опция, важно е да знаете, че другата опция все още е там, ако имате нужда от нея – просто се уверете, че сте взели това решение, след като разгледате фактите, посочени в това ръководство.
Освен това, може да искате да маркирате документите на Nginx, тъй като е достойно и добре да ги препращате често, докато създавате сървърни блокове (ето ви го – сега говорим на езика на Nginx) и ги конфигурирате. Няма да повярвате на всички опции, които са налични за конфигуриране и настройка на този изключителен уеб сървър.
Както винаги, не се колебайте да ни пишете чрез формуляра по-долу, ако имате въпроси или коментари относно тази статия. Очакваме с нетърпение да чуем от вас и вашите отзиви за това ръководство са добре дошли.
PREV: Парти между сървъри
NEXT: Коя е/коя беше любимата ви битка за шеф на частен сървър?