Nginx, ipv6 и виртуальные хосты

Пару лет назад думал что настроил на вэб сервере поддержку ipv6, все онлайн тесты проходили на ура. Но сейчас, настроив у себя ipv6, понял что при обращении к сайтам получаю в ответ “403 Forbidden”. Не приятно конечно, но надо что-то делать. Тогда, при настройке, была информация что нужно добавлять в конфиг сервера запись вида 1 listen [::]:80 ipv6only=on; при чём если её добавлять в несколько виртуальных серверов, то nginx выкидывал ошибку. Пришёл к выводу что достаточно одной директивы в конфиге по умолчанию. Ошибался. В общем смысл таков: В конфиге по умолчанию должно быть прописано 1 2 listen 80 default_server; listen [::]:80 default_server ipv6only=on; а в конфигах каждого виртуального хоста прописываем 1 2 listen 80; listen [::]:80; Таким образом все сайты работают с ipv4 и ipv6. Если поддержка ipv6 для сайта не нужна, то строку 1 listen [::]:80; прописывать не нужно! А ошибку “403 Forbidden” получал из-за того, что у меня хост по умолчанию её отдаёт для всех желающих ломиться по IP, или подбирать поддомены.

13 квітня 2016 · 1 хвилина · 164 слів · dimetrius

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

Заметка об использовании переменных в домене на web сервере nginx, или динамические поддомены. Важно не забыть выше расположить статические поддомены, чтоб динамические их не перебивали. Ну и примеры ниже: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 server { server_name www.example.com; location / { proxy_pass 127.0.0.1:80; } } server { server_name ~^(?<dynamic>[a-z0-9\-]+)\.example.com$; location / { proxy_pass 127.0.0.1:80/sites/$dynamic$uri$is_args$args; } } Вот ещё вариант: Если у вас много поддоменов или вы хотите создавать их автоматически, тогда имеет смысл создать одну универсальную конфигурацию, которая будет обслуживать все поддомены, направляя запросы посетителей в соответствующие каталоги. В первую очередь, необходимо настроить DNS: добавить поддомен с именем * (звездочка, без кавычек) и направить его на IP вашего веб-сервера. Измените секцию server вашего сайта следующим образом: 1 2 3 4 5 6 7 8 9 10 11 12 server { listen 80; server_name example.com *.example.com; root /var/www/example.com/$subdomain; set $subdomain ""; if ($host ~* ^([a-z0-9-\.]+)\.example.com$) { set $subdomain $1; } if ($host ~* ^www.example.com$) { set $subdomain ""; } } Не забудьте поменять example.com на имя вашего домена. Эта конфигурация работает следующим образом: ...

13 квітня 2016 · 1 хвилина · 213 слів · dimetrius

Получение списка всех виртуальных хостов, определенных во всех файлах конфигурации Apache

Вы когда-нибудь искали, где определён виртуальный хост сайта в файлах конфигурации apache? Существует удобная опция, в виде скрипта apache2ctl, который может помочь в этом вопросе. Если Вы наберёте команду: 1 apache2ctl -S в командной строке, Вы получите список всех виртуальных хостов и серверов по умолчанию, включая номер строки, где они определены. Например: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # apache2ctl -S VirtualHost configuration: wildcard NameVirtualHosts and _default_ servers: *:8080 is a NameVirtualHost default server ispconfig.local (/etc/apache2/sites-enabled/000-ispconfig.vhost:10) port 8080 namevhost ispconfig.local (/etc/apache2/sites-enabled/000-ispconfig.vhost:10) *:8081 is a NameVirtualHost default server ispconfig.local (/etc/apache2/sites-enabled/000-apps.vhost:10) port 8081 namevhost ispconfig.local (/etc/apache2/sites-enabled/000-apps.vhost:10) *:80 is a NameVirtualHost default server ispconfig.local (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost ispconfig.local (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost example.com (/etc/apache2/sites-enabled/example.com.vhost:7) Syntax OK Источник КОМТЕТ

13 квітня 2016 · 1 хвилина · 124 слів · dimetrius