Как отключить ненужные поддомены на ispmanager + nginx?

12
S
На сайте с 01.07.2012
Offline
76
5261

По мере необходимости пришлось перейти на nginx на впс стояла ispmanager поскольку в ней особо не силен поставил как есть (просто переключил в настройках PHP в режиме FastCGI (Nginx + PHP-FPM))

Возникла проблема (возможно и была до этого) сайт открывается по всем поддоменам 1.site.ru ww.site.ru asdaf.site.ru любое значение до точки работает как дубль сайта. Сайт должен открываться только на site.ru Все остальное желательно редиректить на страницы без поддомена либо вообще на site.ru/error404.php

Как можно сие убрать или хотя бы закрыть от индексации. Спасибо.

Гемблинг партнерка (https://pin-up.partners/homepage/?referral=5adihskqun) Апрув без заморочек заработок в топе
S3
На сайте с 29.03.2012
Offline
367
#1

Гугл подсказывает что можно использовать default_server


server {
listen 80 default_server;
return 301 http://example.com;
}

Добавить в конфиг нужного сайта

У меня никаких isp нет, поэтому не знаю как он размешщает конфиги

Обычно /etc/nginx/sites-available/

А еще вариант и мне он нравится больше. я его использую для редиректа с www

Но должен и для субдоменов работать


server {
listen 80;
# listen 443;
server_name *.domain.tld;
return 301 $scheme://domain.tld$request_uri;
}

Это нужно добавлять отдельной секцией выше основного домена

S
На сайте с 01.07.2012
Offline
76
#2

Ваш вариант почему то не работает. Может что то не туда пишу.

Сейчас нашел способ:

if ($host = 'www.example.com') {

rewrite ^(.*)$ http://example.com$1 permanent;

}

if ($host = 'm.example.com') {

rewrite ^(.*)$ http://example.com$1 permanent;

}

Вроде работает но только вручную приходится для каждого субдомена запись создавать.

if ($host = '*.example.com') {

rewrite ^(.*)$ http://example.com$1 permanent;

}

Такой вариант работать не хочет. Где то косячу.

S3
На сайте с 29.03.2012
Offline
367
#3

Safronov, а покажите ваш нжинкс целиком?

S
На сайте с 01.07.2012
Offline
76
#4

#user 'siteru' virtual host 'site.ru' configuration file

server {

server_name .site.ru www.site.ru;

charset UTF-8;

disable_symlinks if_not_owner from=$root_path;

index index.php;

autoindex off;

root $root_path;

set $root_path /var/www/siteru/data/www/site.ru;

error_log /dev/null crit;

error_page 404 http://site.ru/error404.html;

if ($host = 'www.site.ru') {

rewrite ^(.*)$ http://site.ru$1 permanent;

}

if ($host = 'm.site.ru') {

rewrite ^(.*)$ http://site.ru$1 permanent;

}

rewrite ^/index.html /index.php;

rewrite ^/search.html /search.php;

rewrite ^/error404.html /error404.php;

rewrite ^/contacts.html /contacts.php;

rewrite ^/news.html /news.php;

rewrite ^/registration.html /registration.php;

include /etc/nginx/vhosts-includes/*.conf;

include /etc/nginx/vhosts-resources/site.ru/*.conf;

location / {

location ~ [^/]\.ph(p\d*|tml)$ {

try_files /does_not_exists @php;

}

}

# Запрещенные папки

location ^~ /blocks/ {

deny all;

}

location ^~ /functions/ {

deny all;

}

location @fallback {

access_log off ;

}

location @php {

fastcgi_index index.php;

fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f site@yandex.ru";

fastcgi_pass unix:/var/www/php-fpm/siteru.sock;

fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;

try_files $uri =404;

include fastcgi_params;

}

ssi on;

gzip on;

gzip_comp_level 2;

access_log off ;

gzip_disable "msie6";

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

listen 00.000.00.000:80;

}

server {

server_name site.ru;

charset UTF-8;

disable_symlinks if_not_owner from=$root_path;

gzip on;

gzip_comp_level 2;

gzip_disable "msie6";

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

index index.php;

root $root_path;

set $root_path /var/www/siteru/data/www/site.ru;

access_log off ;

error_log /dev/null crit;

listen 00.000.00.000:80;

include /etc/nginx/vhosts-includes/*.conf;

location / {

location ~ [^/]\.ph(p\d*|tml)$ {

try_files /does_not_exists @php;

}

}

location @php {

fastcgi_index index.php;

fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f site@yandex.ru";

fastcgi_pass unix:/var/www/php-fpm/siteru.sock;

fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;

try_files $uri =404;

include fastcgi_params;

}

ssi on;

}

Домен и ip затер

Конфиг создавался автоматом при переходе из apache тем же самым ispmanager по этому там мрак.

Висит два сайта на обоих конфиги разные но проблема одна и фактически решается одним способом.

Aisamiery
На сайте с 12.04.2015
Offline
319
#5
Safronov:
Ваш вариант почему то не работает. Может что то не туда пишу.
Такой вариант работать не хочет. Где то косячу.

А сам nginx рестартуете? он конфиги только при рестарте демона компилит.

А так же возможно используется конфигурация не того файла, что вы правите.

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
S3
На сайте с 29.03.2012
Offline
367
#6

Safronov,

И как вы вставляли мой код? Он должен идти отдельным блоком server{...} выше основной части.

А вообще, могли бы потрудиться и выложить в читабельном виде, чтоб не разбираться в ошибках и четко видеть что куда относится. Для того отступы есть)

S
На сайте с 01.07.2012
Offline
76
#7

Рестартую обязательно. В isp конфиг указывается в настройках домена сложно перепутать, вот только под nginx все как то кривовато работает.

Код вставлял в самое начало после строчки

#user 'siteru' virtual host 'site.ru' configuration file

Выложил бы в удобном виде если б понимал что к чему в этом же виде говорю же работал с апатчем вынужден был перейти на nginx Вот и пытаюсь разобраться. Что то уже разобрал с чем то проблемы непонятного вида.

S3
На сайте с 29.03.2012
Offline
367
#8

Safronov, Я тоже не сильно знаток, но синтаксис стандартный, как я понимаю.

Меня у вас, например, смущает 3-я строка, а именно


server_name .site.ru

Пусть знатоки поправят, но это показывает как раз открытие любого поддомена во прямому адресу, без переадресации, поэтому все ваши условия, что идут ниже - не работают уже.

Попробуйте оставить только


server_name www.site.ru

Ну и блоки условий вроде надо размещать выше и отдельной секцией.


server {
listen 80;
server_name *.site.ru;
return 301 $scheme://site.ru$request_uri;
}

Например.

Хотелось бы, чтоб знатоки поправили.

А про Апач, имхо, пора и забывать)

S
На сайте с 01.07.2012
Offline
76
#9

Когда удаляю .site.ru вообще происходит мерзкая фигня, а именно по адресам поддоменов начинает открываться домен другого сайта установленного на этом ВПС который стоит первым в списке в isp панели

Код:

server {

listen 80;

server_name *.site.ru;

return 301 $scheme://site.ru$request_uri;

}

Ставил и в самый верх и после #user 'siteru' virtual host 'site.ru' configuration file

Ставил и отдельным блоком для чистоты эксперимента.

Даже думал что этот конфиг вообще не рабочий но нет условия

if ($host = 'www.site.ru') {

rewrite ^(.*)$ http://site.ru$1 permanent;

}

if ($host = 'm.site.ru') {

rewrite ^(.*)$ http://site.ru$1 permanent;

}

работают корректно.

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

SeVlad
На сайте с 03.11.2008
Offline
1609
#10

омайнгот.. держатели серверов не имеют понятия о виокард доменах?

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий