LINUX.ORG.RU

Имена сервера nginx

 


0

1

Добрый день.

Есть сайт с поддоменами-городами (spb.example.com, msk.example.com), которых, на самом деле, много у нас в матушке-России.

На сервере фронтенд - nginx:

...
server_name www.example.com *.example.com;
...

Бэкенд - тоже nginx. Сейчас (пока поддоменов не много) сделано несколько секций server с разными server_name (и одинаковыми настройками!) для каждого города, что крайне отвратительно!

Если на бэкенде прописать такое же имя сервера (www и *.), как на фронтенде, то браузер сообщает о бесконечном 302 редиректе.

Знаю, что вся проблема в разделителе-точке между доменом и поддоменом. Nginx считает некорректным выражение *example.com - иначе можно было бы прописать так и работало бы.

Как поступить в данном случае?

У нас сделано так, но у нас на разных сайтах контент разный. Что отдавать - определяет роутер приложения.

server_name
                    domain.ru                  domaincool.ru
                    gorod1.domain.ru gorod2.domain.ru ....
                  ;

бэкэнд
апач

Ясн.

ServerName www.example.com
ServerAlias *.example.com
пробовал?

некорректным

Запись *.domain.com корректна, тащемта.

svr4 ()
Последнее исправление: svr4 (всего исправлений: 2)
Ответ на: комментарий от leave

Этим и пытаюсь руководствоваться.

Заметил вот ещё что: например ввожу я в адресе spb.example.com - и в адресной строке адрес меняется на http://www.example.com. После этого браузер сообщает о бесконечном редиректе.

Откуда он берёт этот чёртов реврайт?

tetramin ()
Ответ на: комментарий от leave

Фронтенд:

server {
    listen xx.xx.xx.xx:80;
    server_name example.ru;
    rewrite ^ http://www.example.ru$request_uri? permanent;
}

server {
    listen xx.xx.xx.xx:80;
    server_name *.example.ru;
...

Бэкенд (вот так работает, но это глупо):

server {
    listen 80; 
    server_name www.example.ru;
...
}

server {
    listen 80; 
    server_name spb.example.ru;
...
}

server {
    listen 80; 
    server_name msk.example.ru;
...
}

и так далее для каждого города России...

А вот что-то такое хочу сделать на бэкенде, но не работает:

server {
    listen 80; 
    server_name *.example.ru;
...
}

Явно из бэкенда. Смотрел дебаг-лог. Там проскакивает такая строка:

fastcgi param: "SERVER_NAME: example.ru"
После чего, ниже, редирект 302

tetramin ()
Последнее исправление: tetramin (всего исправлений: 1)
Ответ на: комментарий от tetramin

fastcgi param: «SERVER_NAME: example.ru»

Хотя, тут всё правильно. Он же и берёт её из server_name. В примере выше не правильно написал. Там *.example.ru

Это я потом конфиг поправил и написал.

tetramin ()