Категория > Новости > Путь индейца. Нетривиальная настройка сервера Apache - «Новости»

Путь индейца. Нетривиальная настройка сервера Apache - «Новости»


16-01-2022, 00:02. Автор: Тимофей
Мне­ния отно­ситель­но Apache раз­нятся. Кто‑то счи­тает его рух­лядью на фоне прод­винуто­го и более молодо­го Nginx, кто‑то до сих пор исполь­зует в качес­тве при­выч­ного инс­тру­мен­та. Эта статья — не прос­то ману­ал (коих в Сети — море) по кон­фигура­ции веб‑сер­вера, в ней мы рас­смот­рим нас­трой­ку некото­рых «фишек», которые любой админ смо­жет сме­ло положить в копил­ку собс­твен­ного опы­та.
 

Работа сервера на нескольких портах


Как пра­вило, при нас­трой­ке SSL/HTTPS веб‑сер­вер слу­шает порт 80 или 443. Но в некото­рых слож­ных кон­фигура­циях нуж­но, что­бы он слу­шал нес­коль­ко пор­тов. Далее будет показа­но, как раз­местить на одном сер­вере три незави­симых при­ложе­ния, каж­дое из которых будет работать на собс­твен­ном пор­ту — 80, 3128 и 8080. На прак­тике такая кон­фигура­ция — не ред­кость в dev-сре­дах, где есть пот­ребность в раз­мещении нес­коль­ких незави­симых при­ложе­ний на одном сер­вере (не арен­довать же для это­го сра­зу нес­коль­ко сер­веров?).


Пер­вым делом нуж­но отре­дак­тировать файл /etc/apache2/ports.conf и задать пор­ты, которые будет слу­шать сер­вер (по одно­му пор­ту в строч­ке):


Listen 80
Listen 3128
Listen 8080

Да­лее нуж­но соз­дать кон­фигура­цию для каж­дого из при­ложе­ния (для каж­дого пор­та). Ты можешь исполь­зовать раз­ные фай­лы кон­фигура­ции, а можешь помес­тить все нас­той­ки в один файл — как боль­ше нра­вит­ся. Вот лис­тинг, где все нас­трой­ки хра­нят­ся в одном боль­шом фай­ле (что­бы не делать три раз­ных лис­тинга).


Файл /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
DocumentRoot /var/www/landing
<Directory /var/www/landing>
Options -Indexes
AllowOverride All
# Apache 2.4.x
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Directory>
CustomLog /var/log/apache2/landing.access.log "Combined"
ErrorLog /var/log/apache2/landing.error.log
VirtualHost>
<VirtualHost *:3128>
DocumentRoot /var/www/sonerezh
<Directory /var/www/sonerezh>
Options -Indexes
AllowOverride All
# Apache 2.4.x
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Directory>
CustomLog /var/log/apache2/demo.sonerezh.bzh-access.log "Combined"
ErrorLog /var/log/apache2/demo.sonerezh.bzh-error.log
VirtualHost>
<VirtualHost *:8080>
DocumentRoot /var/www/sonerezh-ru
<Directory /var/www/sonerezh-ru>
Options -Indexes
AllowOverride All
# Apache 2.4.x
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Directory>
CustomLog /var/log/apache2/demo.sonerezh.ru-access.log "Combined"
ErrorLog /var/log/apache2/demo.sonerezh.ru-error.log
VirtualHost>

Прин­цип сле­дующий: мы ука­зыва­ем номер пор­та в дирек­тиве VirtualHost, а затем готовим раз­ную кон­фигура­цию для раз­ных узлов. Пос­ле нас­трой­ки нуж­но не забыть рес­тарта­нуть апач (sudo systemctl restart apache2), а затем обра­щать­ся к каж­дому при­ложе­нию мож­но так:


http://IP:номер порта
 

Динамические поддомены


Час­то для одно­го домена соз­дают­ся под­домены, нап­ример, sales.example.com, support.example.com и т.д. Под­домены нас­тра­ивают­ся c исполь­зовани­ем дирек­тивы VirtualHost. Но если под­доменов мно­го, то тебе быс­тро надо­ест соз­давать отдель­ный кон­фигура­цион­ный файл для каж­дого из них. Гораз­до про­ще исполь­зовать сле­дующую кон­фигура­цию:



Перейти обратно к новости