Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

Здравствуйте. Переехал на новое железо, выбрал связку nginx + php fpm. 

Не хватает знаний по настройке редиректов на www+https и каждому домену задать строго свою директорию, так как несколько доменов работают на 1-м IP.

 

Кто владеет секретной информацией и готов поделиться ею за ₽? Пишите в лс сколько будут стоить ваши знания.

 

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

 

Ппс гуглил, пробовал разные варианты редиректа, но что-то не помогает. 

Надіслати
Поділитися на інших сайтах


Вопрос решил, если кому понадобиться решение.

 

редирект на https 

return 301 https://www.domen.ru$request_uri;

 

Редирект на www

if ($host = domen.ru) {
        rewrite ^(.*) https://www.domen.ru$request_uri? permanent;
    }
 

Перезапустить nginx (Shell: service nginx restart)

 

Надіслати
Поділитися на інших сайтах


В 24.02.2017 в 15:29, magneto2010 сказал:

Редирект на www

if ($host = domen.ru) {
        rewrite ^(.*) https://www.domen.ru$request_uri? permanent;
    }

 

У вас непонятно, что и куда (в какой блок?) писать. Да и if не нужен.

 Последнее время нас приучили набирать название сайта без WWW (это и будет основной алиас), у вас же обратная ситуация (характерно лишь для очень старых сайтов).

 

Нужно для редиректа использовать два блока server (в файле конфигурации nginx для домена) для редиректа. третий блок server будет основным (настройка ЧПУ, php и т. д.), предыдущие только для редиректа.

 

Например, редирект с WWW на "без WWW" и на https из http:


 

server {
    server_name exemple.ru www.exemple.ru;
    listen 46.99.99.99:80;   # IP вашего домена, порт не меняем
    return 301 https://exemple.ru$request_uri;
}

server {
    server_name www.exemple.ru;
    listen 46.99.99.99:443;   # IP вашего домена, порт не меняем
    ssl on;
    ssl_certificate "/*******.crtca";   # здесь соответственно путь до вашего сертификата, ispmanager заполняет самостоятельно
    ssl_certificate_key "/*****.key"; # путь до ключа соответственно
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    add_header Strict-Transport-Security "max-age=31536000;";
    return 301 https://exemple.ru$request_uri;
}

server {
    server_name exemple.ru;

    listen 46.99.99.99:443;   # IP вашего домена, порт не меняем
    ssl on;

    ***  #  здесь все остальное для вашего домена по протоколу https

   ***

}

 

 

Надіслати
Поділитися на інших сайтах

2 часа назад, sitecreator сказал:

Последнее время нас приучили набирать название сайта без WWW (это и будет основной алиас), у вас же обратная ситуация (характерно лишь для очень старых сайтов).

 

нас этого кого? у меня были домены без www, сейчас перевёл все на www - старость? Да нет, просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО.

 

Если ли какое-то ярко-выраженное преимущество? не стану утверждать ибо невежд в этом, но если большинство ведущих интернет площадок используют это, значит есть сок в чём-то? (риторический вопрос)

 

За конфиг спасибо.

Надіслати
Поділитися на інших сайтах


26 минут назад, magneto2010 сказал:

 

нас этого кого? у меня были домены без www, сейчас перевёл все на www - старость? Да нет, просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО.

 

Если ли какое-то ярко-выраженное преимущество? не стану утверждать ибо невежд в этом, но если большинство ведущих интернет площадок используют это, значит есть сок в чём-то? (риторический вопрос)

 

За конфиг спасибо.

Сейчас все будут переделывать" визитки" потому как солиднее

 

https://site.com

:mrgreen:

Надіслати
Поділитися на інших сайтах

1 час назад, magneto2010 сказал:

просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО.

 

ну так это старые монстры.

было время когда деревья... интернет был медленный и сайты начинались только с WWW.  Сейчас есть тенденция упрощать жизнь пользователям, т. е. давать возможность набирать более короткие названия.  Долой лишнюю информацию! Ее и так много в нашей жизни.

А, вообще, у вас браузер неправильный.  :)  Правильный показывает без www

 

03a025cfb8.jpg

 

1 час назад, magneto2010 сказал:

если большинство ведущих интернет площадок используют это, значит есть сок в чём-то?

 

www.mvideo.ru? Домены то еще в прошлом веке созданы. Естественно, что им переход нежелателен как доменам со старой репутацией.

 

А для новых доменов можно делать как нравится.  Принципиальной разницы нет абсолютно никакой.

Но в адресной строке уже никто не набирает "www",  рудимент этот "www" по сути своей для старых сайтов. А для новых это атавизм.

Ни хуже ни лучше от него, просто лишний "орган".

 

Да, и всякие техносилы с мвидео не спешат переходить на https.

 

В общем, спорить здесь бессмысленно - дело вкуса и не более.

Надіслати
Поділитися на інших сайтах

Да, из полезного.

В основную секцию server нужно добавить вот это:

 

location / {
        
    try_files $uri @opencart; }
    location @opencart { rewrite ^/(.+)$ /index.php?_route_=$1 last; }

Это нужно для того чтобы работали ЧПУ. Не забываем, что .htaccess для nginx не существуют, они только для апаче.

 

Также не забываем, что по умолчанию в nginx вы лишены http-авторизации, и, следовательно, некоторые полезные вещи не будут работать. Например, модули обмена данными по протоколу 1С.

 

Что нужно для этого сделать я написал для случаев любых конфигураций серверов здесь: https://opencartforum.com/topic/72591-visnet-apach/

Надіслати
Поділитися на інших сайтах

 

1 час назад, sitecreator сказал:

 

 

03a025cfb8.jpg

 

 

Вы бы для интереса покликали по этим ссылкам :)

 

У меня не работает почему-то ваш конфиг. Я нуб, в настройках nginx.

 

Накалупал методом гуглопроб следующую рабочую конфигурацию.

 

Был бы признателен, если сильны в этом, дать совет по улучшению/сокращению имеющегося кода

 

Скрытый текст

server {
    server_name domen.ru www.domen.ru;
    return 301 https://www.domen.ru$request_uri;
    charset UTF-8;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/domen.ru/*.conf;
    access_log /var/www/httpd-logs/domen.ru.access.log;
    error_log /var/www/httpd-logs/domen.ru.error.log notice;
    ssi on;
    set $root_path /var/www/domen2017/data/www/domen.ru;
    root $root_path;
    listen айпи.47.95:80;
    rewrite ^/sitemap.xml$ /index.php?route=feed/google_sitemap last;
    rewrite ^/googlebase.xml$ /index.php?route=feed/google_base last;
    rewrite ^/download/(.*) /index.php?route=error/not_found last;
    if (!-f $request_filename) {
        set $rule_3 1$rule_3;
    }
    if (!-d $request_filename) {
        set $rule_3 2$rule_3;
    }
    if ($uri !~ ".*.(ico|gif|jpg|jpeg|png|js|css)") {
        set $rule_3 3$rule_3;
    }
    if ($rule_3 = "321") {
        rewrite ^/([^?]*) /index.php?_route_=$1 last;
    }
    gzip on;
    gzip_comp_level 5;
    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;
    expires 15d;
    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 [email protected]";
        fastcgi_pass unix:/var/www/php-fpm/domen2017.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
}
server {
    server_name www.domen.ru;
    ssl on;
    ssl_certificate "/var/www/httpd-cert/domen2017/domen17.crt";
    ssl_certificate_key "/var/www/httpd-cert/domen2017/domen17.key";
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    add_header Strict-Transport-Security "max-age=31536000;";
    charset UTF-8;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/domen.ru/*.conf;
    access_log /var/www/httpd-logs/domen.ru.access.log;
    error_log /var/www/httpd-logs/domen.ru.error.log notice;
    ssi on;
    set $root_path /var/www/domen2017/data/www/domen.ru;
    root $root_path;
    listen айпи.47.95:443;
    if ($host = domen.ru) {
        rewrite ^(.*) https://www.domen.ru$request_uri? permanent;
    }
    rewrite ^/sitemap.xml$ /index.php?route=feed/google_sitemap last;
    rewrite ^/googlebase.xml$ /index.php?route=feed/google_base last;
    rewrite ^/download/(.*) /index.php?route=error/not_found last;
    if (!-f $request_filename) {
        set $rule_3 1$rule_3;
    }
    if (!-d $request_filename) {
        set $rule_3 2$rule_3;
    }
    if ($uri !~ ".*.(ico|gif|jpg|jpeg|png|js|css)") {
        set $rule_3 3$rule_3;
    }
    if ($rule_3 = "321") {
        rewrite ^/([^?]*) /index.php?_route_=$1 last;
    }
    gzip on;
    gzip_comp_level 5;
    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;
    expires 15d;
    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 [email protected]";
        fastcgi_pass unix:/var/www/php-fpm/domen2017.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
}

 

Змінено користувачем magneto2010
Надіслати
Поділитися на інших сайтах


10 минут назад, magneto2010 сказал:

Вы бы для интереса покликали по этим ссылкам :)

 

думаете, что я их не видел? :)

Я  четко выше написал, что они именно с www (сами домены), да и причину указал.  Просто Яндекс, как я понимаю, идет по пути убирания лишней информации.

В любом случае тут спорить не о чем - дело вкуса, не более.

 

15 минут назад, magneto2010 сказал:

Был бы признателен, если сильны в этом, дать совет по улучшению/сокращению имеющегося кода

 

а зачем у вас в блоке server, в котором есть редирект на https присутствует обработка php, gzip и прочее?  До них ведь дело не дойдет, редирект ведь. Этот блок только для редиректа и нужен. Смотрите мои блоки для server.

 

Ну и if многовато у вас.  Можно и без них. Полезно также иметь редирект с "/index.php" на "/".   Это так, если бегло.

И где у вас редирект  на www с "без www"? Он у вас реально работает на сайте?

 

Также любопытно было бы узнать почему решили от Апаче отказаться?

Есть немало скептиков такого перехода. Я сам для себя не могу пока дать однозначный ответ насчет nginx.  Есть желание помониторить ситуацию на конкретном проекте, а дальше уже сделать вывод. Но как минимум пока для себя сделал вывод, что хуже не станет. Отрицательные моменты применительно для Опенкарт мне неизвестны пока.

 

Потенциально положительные моменты, но которые в Опенкарт (дефолтном) пока не используются, я вижу. Опять же плюсы могут проявиться именно при большой загруженности.

  • +1 1
Надіслати
Поділитися на інших сайтах

Вот такой код - это наследие Апача (образа мышления из его конфигов).:

if (!-f $request_filename) {
        set $rule_3 1$rule_3;
    }
    if (!-d $request_filename) {
        set $rule_3 2$rule_3;
    }
    if ($uri !~ ".*.(ico|gif|jpg|jpeg|png|js|css)") {
        set $rule_3 3$rule_3;
    }
    if ($rule_3 = "321") {
        rewrite ^/([^?]*) /index.php?_route_=$1 last;
    }

 

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

А во-вторых, это всё в nginx делается через секции location, которые, по сути, тоже условные операторы с проверкой пути.

 

Чтоб отправить к ОК только запросы, для которых не существует статических файлов или директории, достаточно вместо этого полотнища условий одного блока:

location / {		
	    try_files $uri $uri/ @opencart;
	}

Почти то же самое, что выше уже выложил @sitecreator , но с одной небольшой правкой - $uri/. Таким образом nginx сначала попытается найти файл ($uri), потом директорию ($uri/) и если ничего не найдёт, передаст запрос дальше в блок @opencart.

 

 

  • +1 2
Надіслати
Поділитися на інших сайтах


У яндекса просто стиль выдачи другой, пока...

 Редирект этот

if ($host = domen.ru) {
        rewrite ^(.*) https://www.domen.ru$request_uri? permanent;
    }

 

Скептики и консерваторы есть и будут - как-то наткнулся на тему обсуждения только выпущенного Opencart 2 и "репистые" "тянули мазу" за 15512, но время прошло, технологии двигаются вперёд и консервные банки понемногу открываются.

 

У меня 2 поддерживаемых мной магазина с 20К+ товаром + фильтр + подсчёт кол-ва товаров.

С Apache+php5.4 были фризы при передвижению, сейчас nginx+ php-fpm на php5.6 - магазины стали ощутимей работать быстрее.  Конечно, возможно этому результату также поспособствовало повышение версии php, но пока хочу жить в неведении + к тому же, люблю читать :) , говорят большинство успешных ресурсов,в том числе магазинов, используют именно эту связку. Насколько я понял алгоритм работы обоих систем - nginx, ИМХО  должна справляться быстрее с задачами.

 

 

Спасибо @sitecreator и @Dotrox

 

Змінено користувачем magneto2010
Надіслати
Поділитися на інших сайтах


2 минуты назад, magneto2010 сказал:

как-то наткнулся на тему обсуждения только выпущенного Opencart 2 и "репистые" "тянули мазу" за 15512

 

Это плохой пример. Версия 2.0 была мёртворождённой, такое должно было быть стыдно называть релизом, оно даже на бету не сильно тянуло.

 

 

5 минут назад, magneto2010 сказал:

Конечно, возможно этому результату также поспособствовало повышение версии php

 

Разница между 5.4 и 5.6 не такая кардинальная, чтоб её можно было хорошо заметить невооружённым глазом. В рамках пятёрки основной скачёк был между 5.3 и 5.4, а дальше уже достаточно заметный - на семёрку.

 

 

9 минут назад, magneto2010 сказал:

Редирект этот

 

И это тоже наследие Апача :) Если вы пишите $request_uri, то регулярка уже не нужна (и даже добавляет лишней работы).

 

Достаточно так:

if ($host = 'domain.ru') {      
        return 301 https://www.domain.ru$request_uri;
    }

 

Надіслати
Поділитися на інших сайтах


  • 3 years later...
3 години назад, redolf сказав:

подскажите пожалуйста как прописать 301 редирект в nigix страница site.com на site.com/en

Уточните задачу иначе получите совсем не то, что хотите.

 

Вам нужно, чтоб главная страница редиректила с site.com на site.com/en или же вы хотите, чтоб, в принципе, все ссылки, у которых в начале нет /en редиректили на ссылку с /en? То есть, так: site.com/aaa -> site.com/en/aaa.

 

А второй вопрос: зачем? Это имеет смысл только, если у вас мультиязычный сайт и вы хотите, чтоб английский язык был дефолтным и идентификатор языка при этом всегда был в ссылке. И если у вас таки этот случай, это значит, что у вас кроме en бывают и другие идентификаторы языка в ссылках и тогда задача для условия редиректа меняется: вместо проверки отсутствия en нужно проверять отсутствие языковых идентификаторов, в принципе. Иначе у вас редиректы буду приводить, например, к таким ссылкам: site.com/en/ru.

Надіслати
Поділитися на інших сайтах


32 хвилини назад, Vorobiev сказав:

Проблем не возникает.

Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут :)

Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить.

 

35 хвилин назад, Vorobiev сказав:

apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок )

Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами.

Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx!

А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется.

 

Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками.

Надіслати
Поділитися на інших сайтах


4 часа назад, Dotrox сказал:

Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут :)

Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить.

 

Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами.

Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx!

А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется.

 

Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками.

Перепутал.Заработался

Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

Здравствуйте! Помогите пожалуйста настроить редиректы на nginx+php-fpm, а именно:

Редирект с ip адреса на домен;

Редирект на сайтмэп с языковым префиксом (ua/sitemap.xml - с этим конфигом сайтмэпы с языковым префиксом не отдаются даже через ua/index.php?route=extension/feed/google_sitemap_fast). ua/index.php?route работает только при добавлении 

if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?_route_=$1 last; }

, но не работает при этом /ua/sitemap.xml;

И правило на удаление лишних /// (почему-то только на главной странице они не удаляются, на остальных страницах все норм).

Вот мой конфиг, частично сгенерированый isp manager. Буду очень благодарен за помощь!

 

server {
	server_name site.com www.site.com;
	charset UTF-8;
	index index.php index.html;
	disable_symlinks if_not_owner from=$root_path;
	include /etc/nginx/vhosts-includes/*.conf;
	include /etc/nginx/vhosts-resources/site.com/*.conf;
	access_log /var/www/httpd-logs/site.com.access.log;
	error_log /var/www/httpd-logs/site.com.error.log notice;
	ssi on;
	return 301 https://$host:443$request_uri;
	set $root_path /var/www/user/data/www/site.com;
	root $root_path;
	gzip on;
	gzip_vary on;
gzip_proxied any;
	gzip_comp_level 7;
gzip_buffers 16 8k;
gzip_min_length 256;
	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;
	proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
							 
	location / {
	
	try_files $uri $uri/ @opencart;
	
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}

    	location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|mp3|ogg|mpe?g|avi|woff2|webp)$ {
			expires 365d;
			log_not_found off;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
			try_files $uri $uri/ @fallback;
		}
		location ~* ^.+\.(js|css|zip|gz|bz2?|rar|swf)$ {
			expires 14d;
			log_not_found off;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
			try_files $uri $uri/ @fallback;
		}
		

	rewrite ^/sitemap.xml$ /index.php?route=extension/feed/google_sitemap_fast last;
	rewrite ^/ua/sitemap.xml$ /ua/index.php?route=extension/feed/google_sitemap_fast last;
	rewrite ^/en/sitemap.xml$ /en/index.php?route=extension/feed/google_sitemap_fast last;
    rewrite ^/googlebase.xml$ /index.php?route=feed/google_base last;
    rewrite ^/system/download/(.*) /index.php?route=error/not_found last;	
	}
		
 location @opencart { 
 rewrite ^/(.+)$ /index.php?_route_=$1 last; 
 }	
 
location ~* \.(engine|inc|info|ini|install|log|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {
deny all;
}	
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
	
	listen 111.111.111.11:80 default_server;
	listen [2a05:470:0:f43a::2]:80 default_server;
	location @php {
		fastcgi_index index.php;
		fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
		fastcgi_pass unix:/var/www/php-fpm/user.sock;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		try_files $uri =404;
		include fastcgi_params;
	}
}
server {
	server_name site.com www.site.com;
	ssl_certificate "/var/www/httpd-cert/user/site.com_le3.crtca";
	ssl_certificate_key "/var/www/httpd-cert/user/site.com_le3.key";
	ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
	ssl_prefer_server_ciphers on;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
	charset UTF-8;
	index index.php index.html;
	disable_symlinks if_not_owner from=$root_path;
	include /etc/nginx/vhosts-includes/*.conf;
	include /etc/nginx/vhosts-resources/site.com/*.conf;
	access_log /var/www/httpd-logs/site.com.access.log;
	error_log /var/www/httpd-logs/site.com.error.log notice;
	ssi on;
	set $root_path /var/www/user/data/www/site.com;
	root $root_path;
	gzip on;
	gzip_vary on;
gzip_proxied any;
	gzip_comp_level 7;
gzip_buffers 16 8k;
gzip_min_length 256;
	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;
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;	
	
	location / {

	try_files $uri $uri/ @opencart;
	
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}
		 
    	location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|mp3|ogg|mpe?g|avi|woff2|webp)$ {
			expires 365d;
			log_not_found off;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
			try_files $uri $uri/ @fallback;
		}
		location ~* ^.+\.(js|css|zip|gz|bz2?|rar|swf)$ {
			expires 14d;
			log_not_found off;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
			try_files $uri $uri/ @fallback;
		}
		
		 
	rewrite ^/sitemap.xml$ /index.php?route=extension/feed/google_sitemap_fast last;
	rewrite ^/ua/sitemap.xml$ /ua/index.php?route=extension/feed/google_sitemap_fast last;
	rewrite ^/en/sitemap.xml$ /en/index.php?route=extension/feed/google_sitemap_fast last;
    rewrite ^/googlebase.xml$ /index.php?route=feed/google_base last;
    rewrite ^/system/download/(.*) /index.php?route=error/not_found last;
	
	if ($host ~* www\.(.*)) {
    set $host_without_www $1;
    rewrite ^(.*)$ https://$host_without_www$1 permanent;
    }
	}
	
 location @opencart { 
 rewrite ^/(.+)$ /index.php?_route_=$1 last; 
 }	
 
location ~* \.(engine|inc|info|ini|install|log|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {
deny all;
}
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}


	add_header Strict-Transport-Security "max-age=31536000;";
	listen 111.111.111.11:443 ssl default_server http2;
	listen [2a05:470:0:f43a::2]:443 ssl default_server http2;
	location @php {
		fastcgi_index index.php;
		fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
		fastcgi_pass unix:/var/www/php-fpm/user.sock;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		try_files $uri =404;
		include fastcgi_params;
	}
}

 

Надіслати
Поділитися на інших сайтах


15 годин назад, Radprox сказав:

rewrite ^/ua/sitemap.xml$ /ua/index.php?route=extension/feed/google_sitemap_fast last;

rewrite ^/en/sitemap.xml$ /en/index.php?route=extension/feed/google_sitemap_fast last;

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

 

Но с сайтмапом вам стоит начать с вопроса, а действительно ли вам нужен отдельный сайтмап для каждой языковой версии?

У Гугла есть рекомендации как указать ему на альтернативные языковые версии: https://developers.google.com/search/docs/advanced/crawling/localized-versions

Там сайтмап - это только один из вариантов. Но самое главное: Гугл говорит, что ему нужен 1 сайтмап со специальной разметкой, а не отдельный сайтмап на каждый язык!

Вот, что просит Гугл для сайтмапа:

Прихований текст

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>http://www.example.com/english/page.html</loc>
    <xhtml:link 
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link 
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link 
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/deutsch/page.html</loc>
    <xhtml:link 
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link 
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link 
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/schweiz-deutsch/page.html</loc>
    <xhtml:link 
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link 
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link 
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
</urlset>

 

 

 

 

15 годин назад, Radprox сказав:

Вот мой конфиг, частично сгенерированый isp manager.

Там можно выкинуть половину за ненадобностью.

В блоке server, который отвечает за редирект на https не нужно ничего кроме строк, которые перенаправляют все запросы на https. А у вас там полностью дублируется конфиг сайта.

Кстати, а у вас nginx не ругается на то, что сразу в двух блоках server у вас стоит директива default_server? Хотя, вероятно, вы этого всё равно не видите, если работаете через ISP Manager, а не консоль.

 

15 годин назад, Radprox сказав:

Редирект с ip адреса на домен;

А не факт, что это вообще нужно отдельно прописывать. Разные версии nginx по-разному это обрабатывают, так что понадобится немного поэкспериментировать.

Для начало убедитесь, что у вас default_server стоит только в основном блоке server.

Где-то в директории /etc/nginx или поддиректориях должен быть дефолтный конфиг, где тоже, вероятно, стоит default_server. Там тоже уберите.

 

Если такой вариант не сработает, тогда добавьте в блок server, который отвечает за редирект на https, в список доменов поддчёркивание:

server_name _ site.com www.site.com;

Оно отвечает за перехват всего, для чего нет отдельного блока server (на самом деле это просто "неправильный" домен, а не какая-то специальная директива, но оно приводит именно к перехвату всего).

А дефолтный конфиг вообще тогда отключите (добавьте подчёркивание в расширение файла: default.conf_). И переставьте default_server на этот блок server.

Надіслати
Поділитися на інших сайтах


@Dotrox Не мог бы глубокоуважаемый дон взглянуть на это и высказать свое мнение?

Спойлер

govnosite.ru.ssl.conf

 


#x# HTTPS-DEFAULT
 server {
   
   server_name govnosite.ru www.govnosite.ru;
   return 302 https://govnosite.ru$request_uri;
   include /usr/local/nginx/conf/staticfiles.conf;
 }

#       listen   80;
#       server_name govnosite.ru www.govnosite.ru;
#       return 302 https://$server_name$request_uri;

server {
  listen 443 ssl http2 reuseport;
  server_name govnosite.ru www.govnosite.ru;


  include /usr/local/nginx/conf/ssl/govnosite.ru/govnosite.ru.crt.key.conf;
  include /usr/local/nginx/conf/ssl_include.conf;

  # cloudflare authenticated origin pull cert community.centminmod.com/threads/13847/
  #ssl_client_certificate /usr/local/nginx/conf/ssl/cloudflare/govnosite.ru/origin.crt;
  #ssl_verify_client on;
  http2_max_field_size 16k;
  http2_max_header_size 32k;
  # mozilla recommended
  ssl_ciphers TLS13-AES-128-GCM-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
  ssl_prefer_server_ciphers   on;
  #add_header Alternate-Protocol  443:npn-spdy/3;

  # before enabling HSTS line below read centminmod.com/nginx_domain_dns_setup.html#hsts
  #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
  #add_header X-Frame-Options SAMEORIGIN;
  add_header X-Xss-Protection "1; mode=block" always;
  add_header X-Content-Type-Options "nosniff" always;
  #add_header Referrer-Policy "strict-origin-when-cross-origin";
  #spdy_headers_comp 5;
  ssl_buffer_size 1369;
  ssl_session_tickets on;

  # enable ocsp stapling
  resolver 8.8.8.8 8.8.4.4 1.1.1.1 1.0.0.1 valid=10m;
  resolver_timeout 10s;
  ssl_stapling on;
  ssl_stapling_verify on;

# ngx_pagespeed & ngx_pagespeed handler
#include /usr/local/nginx/conf/pagespeed.conf;
#include /usr/local/nginx/conf/pagespeedhandler.conf;
#include /usr/local/nginx/conf/pagespeedstatslog.conf;

  # limit_conn limit_per_ip 16;
  # ssi  on;

  access_log /home/nginx/domains/govnosite.ru/log/access.log combined buffer=256k flush=5m;
  error_log /home/nginx/domains/govnosite.ru/log/error.log;

  include /usr/local/nginx/conf/autoprotect/govnosite.ru/autoprotect-govnosite.ru.conf;
  root /home/nginx/domains/govnosite.ru/public;
  # uncomment cloudflare.conf include if using cloudflare for
  # server and/or vhost site
  #include /usr/local/nginx/conf/cloudflare.conf;
  include /usr/local/nginx/conf/503include-main.conf;

  location / {
  include /usr/local/nginx/conf/503include-only.conf;

# block common exploits, sql injections etc
#include /usr/local/nginx/conf/block.conf;

  # Enables directory listings when index file not found
  #autoindex  on;

  # Shows file listing times as local time
  #autoindex_localtime on;

  # Wordpress Permalinks example
  #try_files $uri $uri/ /index.php?q=$uri&$args;


# OPENCART
try_files $uri @opencart;
  }

  include /usr/local/nginx/conf/pre-staticfiles-local-govnosite.ru.conf;
  include /usr/local/nginx/conf/pre-staticfiles-global.conf;
  include /usr/local/nginx/conf/staticfiles.conf;
  include /usr/local/nginx/conf/php.conf;
  
  include /usr/local/nginx/conf/drop.conf;
  #include /usr/local/nginx/conf/errorpage.conf;
  include /usr/local/nginx/conf/vts_server.conf;

  include /usr/local/nginx/conf/opencart.conf;


}
 

 

Спойлер

opencart.conf

 

location ~* \/\.ht {         deny all;    }

location ~* (\.tpl|.twig|\.ini|\.log|(?<!robots)\.txt) {         deny all;     }

location ~* \/\.git {        deny all;    }

location ~* \/image.+(\.php) {               deny all;    }

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {        expires max;        log_not_found off;    }

location = /sitemap.xml {        rewrite ^(.*)$ /index.php?route=extension/feed/google_sitemap last;    }

location = /googlebase.xml {        rewrite ^(.*)$ /index.php?route=extension/feed/google_base last;    }

location /system {        rewrite ^/system/storage/(.*) /index.php?route=error/not_found last;    }

#location = /favicon.ico {        log_not_found off;        access_log off;    }

#location = /robots.txt {        allow all;        log_not_found off;        access_log off;    }

location /admin {
index index.php;

    allow 127.0.0.1;
    allow *.*.*.*;
    deny  all;

limit_except GET {

    allow 127.0.0.1;
    allow *.*.*.*;
    deny  all;
}

}

#location / {try_files $uri @opencart;}

location @opencart { rewrite ^/(.+)$ /index.php?_route_=$1 last;     }
 

 

Надіслати
Поділитися на інших сайтах


Спойлер

 

Спасибо за ответ. @DotroxПравильно я убрал лишнее, или что-то еще нужно убрать?

11 часов назад, Dotrox сказал:

Если такой вариант не сработает, тогда добавьте в блок server, который отвечает за редирект на https, в список доменов поддчёркивание:


server_name _ site.com www.site.com;

Это не сработало для меня. Может еще какие-то варианты?  nginx/1.16.1

Змінено користувачем Radprox
Надіслати
Поділитися на інших сайтах


ВОт содержание файла /etc/nginx/nginx.conf

Спойлер


user www-data;
worker_processes  auto;
worker_rlimit_nofile 65000;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  3072;
    multi_accept on;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
ssi_last_modified on;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  45;
 #gzip on;
 server_tokens off;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/vhosts/*/*.conf;
    client_max_body_size 600m;
    server {
        server_name localhost;
    disable_symlinks if_not_owner;
    include /etc/nginx/vhosts-includes/*.conf;
    location @fallback {
        error_log /dev/null crit;
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect http://127.0.0.1:8080 /;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        access_log off ;
    }
    listen 80;
    listen [::]:80;
    }
}
 

 

Змінено користувачем Radprox
Надіслати
Поділитися на інших сайтах


Спойлер

server {
    server_name _ site.com www.site.com;
    charset UTF-8;
    index index.php index.html;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.com/*.conf;
    access_log /var/www/httpd-logs/site.com.access.log;
    error_log /var/www/httpd-logs/site.com.error.log notice;
    return 301 https://$host:443$request_uri;
    set $root_path /var/www/user/data/www/site.com;
    root $root_path;                         
    listen 111.11.111.11:80;
    listen [2f05:481:0:f45s::2]:80;

}
server {
    server_name site.com www.site.com;
    ssl_certificate "/var/www/httpd-cert/user/site.com_le3.crtca";
    ssl_certificate_key "/var/www/httpd-cert/user/site.com_le3.key";
    ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
    charset UTF-8;
    index index.php index.html;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.com/*.conf;
    access_log /var/www/httpd-logs/site.com.access.log;
    error_log /var/www/httpd-logs/site.com.error.log notice;
    ssi on;
    set $root_path /var/www/user/data/www/site.com;
    root $root_path;
    gzip on;
    gzip_vary on;
gzip_proxied any;
    gzip_comp_level 7;
gzip_buffers 16 8k;
gzip_min_length 256;
    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;
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;    
    
    location / {

    try_files $uri $uri/ @opencart;
    
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
         
        location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|mp3|ogg|mpe?g|avi|woff2|webp)$ {
            expires 365d;
            log_not_found off;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
            try_files $uri $uri/ @fallback;
        }
        location ~* ^.+\.(js|css|zip|gz|bz2?|rar|swf)$ {
            expires 14d;
            log_not_found off;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
            try_files $uri $uri/ @fallback;
        }
        
         
    rewrite ^/sitemap.xml$ /index.php?route=extension/feed/google_sitemap_fast last;
    rewrite ^/googlebase.xml$ /index.php?route=feed/google_base last;
    rewrite ^/system/download/(.*) /index.php?route=error/not_found last;
    
    if ($host ~* www\.(.*)) {
    set $host_without_www $1;
    rewrite ^(.*)$ https://$host_without_www$1 permanent;
    }
    }
    
 location @opencart { 
 rewrite ^/(.+)$ /index.php?_route_=$1 last; 
 }
 
if (!-e $request_filename) { 
rewrite ^/(.*)$ /index.php?_route_=$1 last; 

}
location ~* \.(engine|inc|info|ini|install|log|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {
deny all;
}
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}


    add_header Strict-Transport-Security "max-age=31536000;";
    listen 111.11.111.11:443 ssl default_server http2;
    listen [2f05:481:0:f45s::2]:443 ssl default_server http2;
    location @php {
        fastcgi_index index.php;
        fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
        fastcgi_pass unix:/var/www/php-fpm/user.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
}
 

Вот мой конфиг. @DotroxПравильно я убрал лишнее, или что-то еще нужно убрать?

Змінено користувачем Radprox
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.