Задать вопрос
bezrukovPS
@bezrukovPS
Ведущий программист 1С-Битрикс

Как правильно писать связанные условия rewrite в настройках сервера nginx?

Добрый день.
Неоднократно пытался найти ответы на хабре и документации по nginx - увы не нашёл.

Суть проблемы в том что не понятно можно ли на nginx написать нечто подобное:
RewriteCond %{REMOTE_HOST}  ^host1.*  [OR]
RewriteCond %{REMOTE_HOST}  ^host2.*  [OR]
RewriteCond %{REMOTE_HOST}  ^host3.*
RewriteRule ...some special stuff for any of these hosts...

Летом не найдя решения, а стартап писать хочется на быстром сервере, написал костыли на базе конкатенации операндов в условии, примерно так
set $host_uri $host$request_uri;
if ($host_uri ~ bla-bla){
	rewrite ^(/(ru|en))(/.*) /community$3 last;
}

Но это очевидно не решение и даже не решение первого примера.
Пожалуйста помогите разобраться, очень много времени потратил на выяснение, в своё время.
Читал что кто-то с location тоже какие-то костыли пишет, но я не понял как, так как если один location схватит link, то тогда другой location с пробросом до php-fpm не отработает и php не подключается. Описывать проброс до php в каждом location очевидно не правильно.
Теперь вот хоть есть где спросить.
  • Вопрос задан
  • 2763 просмотра
Подписаться 2 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 4
@Nc_Soft
Почему через приложение это не разрулить?
Ответ написан
hell0w0rd
@hell0w0rd
Просто разработчик
ничего не понятно из вашего вопроса.
Понятно что вы хотите огромную махину битрикс типо оптимизировать. Редиректы - 5%, а то и меньше, чего тут оптимизировать?
Ответ написан
Комментировать
@Nc_Soft
Вот вам другая ветка :)
вот это
set $host_uri $host$request_uri;
if ($host_uri ~ bla-bla){
    rewrite ^(/(ru|en))(/.*) /community$3 last;
}

по уму делается так
server {
    listen 80;
    server_name  host1.blabla.com; 
    location / {
          rewrite ^(/(ru|en))(/.*) /community$3 last;
    }
}
server {
    listen 80;
    server_name  host2.blabla.com; 
    location / {
          #другое правило итд
          rewrite ^(/(ru|en))(/.*) /community$3 last;
    }
}

Повторяющиеся блоки можно через include сделать.
Ответ написан
Комментировать
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
По-хорошему, конечно же, для каждого отдельного хоста (поддомена) следует отдельный сервер заводить в nginx.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы