Настройка сервера - не знаю куда копать

(Ответов: 5, Просмотров: 529)
  1. Гуру Аватар для Vooda2012
    • Регистрация: 16.05.2012
    • Сообщений: 524
    • Репутация: 156
    Ребят. Сейчас обнаружил такую проблему: есть сервер, на нем несколько WP сайтов. Сайты работают на nginx+php-fpm. Несколько сайтов на одном IP.

    Если на Сайт№1 заходить с www (хотя он не используется), то открывается Сайт№2 (хотя в адресной строке - www.сайт№1.ru).

    Обнаружил это, когда увидел, что есть переходы на сайт№2 с сайта№1. И что самое печальное - в выдаче гугла по основному запросу сайта№2 находиться www.сайт№1.

    Ох, надеюсь кто-нибудь поймет этот поток мыслей)
    • 0
  2. Qui dicit eam omnia Аватар для Coder
    • Регистрация: 29.01.2015
    • Сообщений: 801
    • Репутация: 294
    Склеены ли www и без (301 редирект) - то есть определено ли главное зеркало каждого сайта? Если нет, то стоит сделать и посмотреть результат.
    • 1

    Спасибо сказали:

    Vooda2012(02.02.2016),
  3. Гуру Аватар для Vooda2012
    • Регистрация: 16.05.2012
    • Сообщений: 524
    • Репутация: 156
    Coder, Не так давно перебрался на связку nginx+php-fpm, поэтому порой сильно туплю.

    Проблема решилась путем прописывания в конфиг nginx для каждого сайта дополнительной секции server

    Код:
    server {
    server_name www.site1.ru;
    rewrite ^ http://site1.ru$request_uri? permanent;
    }
    Может кто подскажет, как правильно прописать в основном конфиге nginx, чтобы не добавлять эту запись для каждого домена.
    • 1

    Спасибо сказали:

    Coder(02.02.2016),
  4. Студент
    • Регистрация: 19.06.2015
    • Сообщений: 65
    • Репутация: 0
    Vooda2012,
    Если проблема актуальна
    Напишите в тикет
    • 0
  5. Опытный Аватар для redeyer
    • Регистрация: 07.01.2015
    • Сообщений: 497
    • Репутация: 187
    • Webmoney BL: ?
    Vooda2012, нужно в конфигурации nginx для каждого виртуалхоста добавлять в server_name оба варианта - и с www и без оного. Если на NS указан *.site.com на ваш сервер - то добавить и такой вариант в конфиг nginx, иначе любое blahblah.site.com откроет сайт№1



    А ещё, нужно убрать конфиг по умолчанию чтобы не смотрел на какой-то из сайтов, а показывал что нибудь вроде 403 или возвращал 444 (пустой ответ).
    Для этого создайте "сайт" с таким конфигом:

    Код:
    # 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;
    }
    И перезапустите nginx.

    p.s: Сам буквально на днях с этим столкнулся, когда увидел в выдаче по одному из сайтов с www главную другого сайта

    ---------- Сообщение добавлено 17:20 ---------- Предыдущее 16:04 ----------

    Пока писал свой красивый пост уже во всём разобрались :)



    Цитата Сообщение от Vooda2012 Посмотреть сообщение
    Может кто подскажет, как правильно прописать в основном конфиге nginx, чтобы не добавлять эту запись для каждого домена.
    server_name в любом случае должна быть для каждого сайта, без неё никак. Один общий конфиг для нескольких сайтов написать конечно можно, но где-то в любом случае нужно брать значение для переменной, используемой в server_name. Имя директории? Или по server_name $host; - он будет отвечать на любой адрес, который направлен на ваш IP. Но тогда нужно ставить какую то проверку типа

    Код:
    if ($host != "example.com") {
            return 403;
        }
    А в example.com нужно перечилять существующие сайты, или опять же, ставить переменную. Можно поробовать проверять существует ли директория и отвечать только на те $host, которые совпадают с существующими директориями.
    Иначе любой может добавить себе в hosts ваш ip адрес с любым именем и долбиться по нему.
    • 1

    Спасибо сказали:

    Vooda2012(02.02.2016),
  6. Опытный Аватар для redeyer
    • Регистрация: 07.01.2015
    • Сообщений: 497
    • Репутация: 187
    • Webmoney BL: ?
    Итак, я заморочился и таки написал конфиг для любого количества сайтов в Nginx. При обращении он проверяет наличие папки и отдаёт только существующие сайты. Если папки нет - вернёт пустой ответ.

    Код:
    server {
    server_name ~^(www.)?(?.+)$;
    root /var/www/$domain;
    if (!-d /var/www/$domain) {
    return 444;
    }
    #остальной ваш конфиг
    }
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Куда пристроить 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

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры