Ребят. Сейчас обнаружил такую проблему: есть сервер, на нем несколько WP сайтов. Сайты работают на nginx+php-fpm. Несколько сайтов на одном IP.
Если на Сайт№1 заходить с www (хотя он не используется), то открывается Сайт№2 (хотя в адресной строке - www.сайт№1.ru).
Обнаружил это, когда увидел, что есть переходы на сайт№2 с сайта№1. И что самое печальное - в выдаче гугла по основному запросу сайта№2 находиться www.сайт№1.
Ох, надеюсь кто-нибудь поймет этот поток мыслей)
- 02.02.2016 14:36
- 02.02.2016 14:43
Склеены ли www и без (301 редирект) - то есть определено ли главное зеркало каждого сайта? Если нет, то стоит сделать и посмотреть результат.
Спасибо сказали:
Vooda2012(02.02.2016), - 02.02.2016 14:52
Coder, Не так давно перебрался на связку nginx+php-fpm, поэтому порой сильно туплю.
Проблема решилась путем прописывания в конфиг nginx для каждого сайта дополнительной секции server
Код:Может кто подскажет, как правильно прописать в основном конфиге nginx, чтобы не добавлять эту запись для каждого домена.server { server_name www.site1.ru; rewrite ^ http://site1.ru$request_uri? permanent; }Спасибо сказали:
Coder(02.02.2016), - 02.02.2016 14:52Студент

- Регистрация: 19.06.2015
- Сообщений: 65
- Репутация: 0
Vooda2012,
Если проблема актуальна
Напишите в тикет - 02.02.2016 16:20
Vooda2012, нужно в конфигурации nginx для каждого виртуалхоста добавлять в server_name оба варианта - и с www и без оного. Если на NS указан *.site.com на ваш сервер - то добавить и такой вариант в конфиг nginx, иначе любое blahblah.site.com откроет сайт№1

А ещё, нужно убрать конфиг по умолчанию чтобы не смотрел на какой-то из сайтов, а показывал что нибудь вроде 403 или возвращал 444 (пустой ответ).
Для этого создайте "сайт" с таким конфигом:
Код:И перезапустите nginx.# Default server for clients who do not send correct Host header. # The underline in the file name makes sure that this file comes first in the dir. server { server_name _; listen *:80 default_server deferred; return 444; }
p.s: Сам буквально на днях с этим столкнулся, когда увидел в выдаче по одному из сайтов с www главную другого сайта
---------- Сообщение добавлено 17:20 ---------- Предыдущее 16:04 ----------
Пока писал свой красивый пост уже во всём разобрались :)
server_name в любом случае должна быть для каждого сайта, без неё никак. Один общий конфиг для нескольких сайтов написать конечно можно, но где-то в любом случае нужно брать значение для переменной, используемой в server_name. Имя директории? Или по server_name $host; - он будет отвечать на любой адрес, который направлен на ваш IP. Но тогда нужно ставить какую то проверку типа
Код:А в example.com нужно перечилять существующие сайты, или опять же, ставить переменную. Можно поробовать проверять существует ли директория и отвечать только на те $host, которые совпадают с существующими директориями.if ($host != "example.com") { return 403; }
Иначе любой может добавить себе в hosts ваш ip адрес с любым именем и долбиться по нему.Спасибо сказали:
Vooda2012(02.02.2016), - 10.02.2016 02:04
Итак, я заморочился и таки написал конфиг для любого количества сайтов в Nginx. При обращении он проверяет наличие папки и отдаёт только существующие сайты. Если папки нет - вернёт пустой ответ.
Код:server { server_name ~^(www.)?(?.+)$; root /var/www/$domain; if (!-d /var/www/$domain) { return 444; } #остальной ваш конфиг }
Похожие темы
| Темы | Раздел | Ответов | Последний пост |
|---|---|---|---|
Куда пристроить 3 выделенных сервера? | Хостинг и Серверы | 2 | 27.11.2014 20:03 |
Настройка сервера под видео онлайн (фильмы) | Хостинг и Серверы | 5 | 01.02.2014 18:56 |
Накопилась куча вопросов, не знаю кому задавать и куда бежать | Вопросы от новичков | 21 | 18.03.2013 16:09 |
Настройка сервера для корректной работы WP | Хостинг и Серверы | 7 | 25.08.2012 23:00 |
Развитие форума. Куда копать ? | Вопросы от новичков | 8 | 30.08.2011 19:53 |




