magneto2010 Опубліковано: 24 лютого 2017 Share Опубліковано: 24 лютого 2017 Здравствуйте. Переехал на новое железо, выбрал связку nginx + php fpm. Не хватает знаний по настройке редиректов на www+https и каждому домену задать строго свою директорию, так как несколько доменов работают на 1-м IP. Кто владеет секретной информацией и готов поделиться ею за ₽? Пишите в лс сколько будут стоить ваши знания. пс выбор связки прошу не обсуждать, вернее можете, но где нибудь в курилке и к известным членам этого сообщества не посылать - я пришел от них. Ппс гуглил, пробовал разные варианты редиректа, но что-то не помогает. Надіслати Поділитися на інших сайтах More sharing options...
magneto2010 Опубліковано: 24 лютого 2017 Автор Share Опубліковано: 24 лютого 2017 Вопрос решил, если кому понадобиться решение. редирект на 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) Надіслати Поділитися на інших сайтах More sharing options...
sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 В 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 *** } Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 2 часа назад, sitecreator сказал: Последнее время нас приучили набирать название сайта без WWW (это и будет основной алиас), у вас же обратная ситуация (характерно лишь для очень старых сайтов). нас этого кого? у меня были домены без www, сейчас перевёл все на www - старость? Да нет, просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО. Если ли какое-то ярко-выраженное преимущество? не стану утверждать ибо невежд в этом, но если большинство ведущих интернет площадок используют это, значит есть сок в чём-то? (риторический вопрос) За конфиг спасибо. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 26 минут назад, magneto2010 сказал: нас этого кого? у меня были домены без www, сейчас перевёл все на www - старость? Да нет, просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО. Если ли какое-то ярко-выраженное преимущество? не стану утверждать ибо невежд в этом, но если большинство ведущих интернет площадок используют это, значит есть сок в чём-то? (риторический вопрос) За конфиг спасибо. Сейчас все будут переделывать" визитки" потому как солиднее https://site.com Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 1 час назад, magneto2010 сказал: просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО. ну так это старые монстры. было время когда деревья... интернет был медленный и сайты начинались только с WWW. Сейчас есть тенденция упрощать жизнь пользователям, т. е. давать возможность набирать более короткие названия. Долой лишнюю информацию! Ее и так много в нашей жизни. А, вообще, у вас браузер неправильный. Правильный показывает без www 1 час назад, magneto2010 сказал: если большинство ведущих интернет площадок используют это, значит есть сок в чём-то? www.mvideo.ru? Домены то еще в прошлом веке созданы. Естественно, что им переход нежелателен как доменам со старой репутацией. А для новых доменов можно делать как нравится. Принципиальной разницы нет абсолютно никакой. Но в адресной строке уже никто не набирает "www", рудимент этот "www" по сути своей для старых сайтов. А для новых это атавизм. Ни хуже ни лучше от него, просто лишний "орган". Да, и всякие техносилы с мвидео не спешат переходить на https. В общем, спорить здесь бессмысленно - дело вкуса и не более. Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Да, из полезного. В основную секцию 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/ Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) 1 час назад, sitecreator сказал: Вы бы для интереса покликали по этим ссылкам У меня не работает почему-то ваш конфиг. Я нуб, в настройках 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; } } Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 10 минут назад, magneto2010 сказал: Вы бы для интереса покликали по этим ссылкам думаете, что я их не видел? Я четко выше написал, что они именно с www (сами домены), да и причину указал. Просто Яндекс, как я понимаю, идет по пути убирания лишней информации. В любом случае тут спорить не о чем - дело вкуса, не более. 15 минут назад, magneto2010 сказал: Был бы признателен, если сильны в этом, дать совет по улучшению/сокращению имеющегося кода а зачем у вас в блоке server, в котором есть редирект на https присутствует обработка php, gzip и прочее? До них ведь дело не дойдет, редирект ведь. Этот блок только для редиректа и нужен. Смотрите мои блоки для server. Ну и if многовато у вас. Можно и без них. Полезно также иметь редирект с "/index.php" на "/". Это так, если бегло. И где у вас редирект на www с "без www"? Он у вас реально работает на сайте? Также любопытно было бы узнать почему решили от Апаче отказаться? Есть немало скептиков такого перехода. Я сам для себя не могу пока дать однозначный ответ насчет nginx. Есть желание помониторить ситуацию на конкретном проекте, а дальше уже сделать вывод. Но как минимум пока для себя сделал вывод, что хуже не станет. Отрицательные моменты применительно для Опенкарт мне неизвестны пока. Потенциально положительные моменты, но которые в Опенкарт (дефолтном) пока не используются, я вижу. Опять же плюсы могут проявиться именно при большой загруженности. 1 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Вот такой код - это наследие Апача (образа мышления из его конфигов).: 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. 2 Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) У яндекса просто стиль выдачи другой, пока... Редирект этот 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 Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 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; } Надіслати Поділитися на інших сайтах More sharing options... 3 years later... redolf Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 Ребят гуглил примеры и не нашел подскажите пожалуйста как прописать 301 редирект в nigix страница site.com на site.com/en Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 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. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 Я использую связку apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) + opencart Проблем не возникает. Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 32 хвилини назад, Vorobiev сказав: Проблем не возникает. Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. 35 хвилин назад, Vorobiev сказав: apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 4 часа назад, Dotrox сказал: Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Перепутал.Заработался Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 У меня есть магазины на 30000 товаров и более и ниче.. Работают Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 13 січня 2021 Share Опубліковано: 13 січня 2021 В 11.01.2021 в 13:43, Vorobiev сказав: У меня есть магазины на 30000 товаров и более и ниче.. Работают А какие характеристики сервера? Надіслати Поділитися на інших сайтах More sharing options... 4 weeks later... Radprox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 Здравствуйте! Помогите пожалуйста настроить редиректы на 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; } } Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 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. Надіслати Поділитися на інших сайтах More sharing options... 001 Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 @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; } Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер Спасибо за ответ. @DotroxПравильно я убрал лишнее, или что-то еще нужно убрать? 11 часов назад, Dotrox сказал: Если такой вариант не сработает, тогда добавьте в блок server, который отвечает за редирект на https, в список доменов поддчёркивание: server_name _ site.com www.site.com; Это не сработало для меня. Может еще какие-то варианты? nginx/1.16.1 Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) ВОт содержание файла /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; } } Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер 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Правильно я убрал лишнее, или что-то еще нужно убрать? Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Проблема с поиском и чпу (nginx + php fpm) Автор: arki, 21 липня 2020 nginx редиректы nginx + php fpm редиректы (і ще %d) Теги: nginx редиректы nginx + php fpm редиректы seopro чпу seo чпу 0 відповідей 1 128 переглядів arki 21 липня 2020 Nginx Редирект не работает Автор: fduw, 25 квітня 2020 nginx редиректы nginx 2 відповіді 1 021 перегляд fduw 26 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Послуги Системне адміністрування (налаштування хостингу, серверів, ПЗ) Nginx + php fpm редиректы Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 2 часа назад, sitecreator сказал: Последнее время нас приучили набирать название сайта без WWW (это и будет основной алиас), у вас же обратная ситуация (характерно лишь для очень старых сайтов). нас этого кого? у меня были домены без www, сейчас перевёл все на www - старость? Да нет, просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО. Если ли какое-то ярко-выраженное преимущество? не стану утверждать ибо невежд в этом, но если большинство ведущих интернет площадок используют это, значит есть сок в чём-то? (риторический вопрос) За конфиг спасибо. Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 26 минут назад, magneto2010 сказал: нас этого кого? у меня были домены без www, сейчас перевёл все на www - старость? Да нет, просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО. Если ли какое-то ярко-выраженное преимущество? не стану утверждать ибо невежд в этом, но если большинство ведущих интернет площадок используют это, значит есть сок в чём-то? (риторический вопрос) За конфиг спасибо. Сейчас все будут переделывать" визитки" потому как солиднее https://site.com Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 1 час назад, magneto2010 сказал: просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО. ну так это старые монстры. было время когда деревья... интернет был медленный и сайты начинались только с WWW. Сейчас есть тенденция упрощать жизнь пользователям, т. е. давать возможность набирать более короткие названия. Долой лишнюю информацию! Ее и так много в нашей жизни. А, вообще, у вас браузер неправильный. Правильный показывает без www 1 час назад, magneto2010 сказал: если большинство ведущих интернет площадок используют это, значит есть сок в чём-то? www.mvideo.ru? Домены то еще в прошлом веке созданы. Естественно, что им переход нежелателен как доменам со старой репутацией. А для новых доменов можно делать как нравится. Принципиальной разницы нет абсолютно никакой. Но в адресной строке уже никто не набирает "www", рудимент этот "www" по сути своей для старых сайтов. А для новых это атавизм. Ни хуже ни лучше от него, просто лишний "орган". Да, и всякие техносилы с мвидео не спешат переходить на https. В общем, спорить здесь бессмысленно - дело вкуса и не более. Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Да, из полезного. В основную секцию 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/ Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) 1 час назад, sitecreator сказал: Вы бы для интереса покликали по этим ссылкам У меня не работает почему-то ваш конфиг. Я нуб, в настройках 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; } } Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 10 минут назад, magneto2010 сказал: Вы бы для интереса покликали по этим ссылкам думаете, что я их не видел? Я четко выше написал, что они именно с www (сами домены), да и причину указал. Просто Яндекс, как я понимаю, идет по пути убирания лишней информации. В любом случае тут спорить не о чем - дело вкуса, не более. 15 минут назад, magneto2010 сказал: Был бы признателен, если сильны в этом, дать совет по улучшению/сокращению имеющегося кода а зачем у вас в блоке server, в котором есть редирект на https присутствует обработка php, gzip и прочее? До них ведь дело не дойдет, редирект ведь. Этот блок только для редиректа и нужен. Смотрите мои блоки для server. Ну и if многовато у вас. Можно и без них. Полезно также иметь редирект с "/index.php" на "/". Это так, если бегло. И где у вас редирект на www с "без www"? Он у вас реально работает на сайте? Также любопытно было бы узнать почему решили от Апаче отказаться? Есть немало скептиков такого перехода. Я сам для себя не могу пока дать однозначный ответ насчет nginx. Есть желание помониторить ситуацию на конкретном проекте, а дальше уже сделать вывод. Но как минимум пока для себя сделал вывод, что хуже не станет. Отрицательные моменты применительно для Опенкарт мне неизвестны пока. Потенциально положительные моменты, но которые в Опенкарт (дефолтном) пока не используются, я вижу. Опять же плюсы могут проявиться именно при большой загруженности. 1 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Вот такой код - это наследие Апача (образа мышления из его конфигов).: 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. 2 Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) У яндекса просто стиль выдачи другой, пока... Редирект этот 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 Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 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; } Надіслати Поділитися на інших сайтах More sharing options... 3 years later... redolf Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 Ребят гуглил примеры и не нашел подскажите пожалуйста как прописать 301 редирект в nigix страница site.com на site.com/en Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 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. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 Я использую связку apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) + opencart Проблем не возникает. Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 32 хвилини назад, Vorobiev сказав: Проблем не возникает. Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. 35 хвилин назад, Vorobiev сказав: apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 4 часа назад, Dotrox сказал: Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Перепутал.Заработался Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 У меня есть магазины на 30000 товаров и более и ниче.. Работают Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 13 січня 2021 Share Опубліковано: 13 січня 2021 В 11.01.2021 в 13:43, Vorobiev сказав: У меня есть магазины на 30000 товаров и более и ниче.. Работают А какие характеристики сервера? Надіслати Поділитися на інших сайтах More sharing options... 4 weeks later... Radprox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 Здравствуйте! Помогите пожалуйста настроить редиректы на 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; } } Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 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. Надіслати Поділитися на інших сайтах More sharing options... 001 Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 @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; } Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер Спасибо за ответ. @DotroxПравильно я убрал лишнее, или что-то еще нужно убрать? 11 часов назад, Dotrox сказал: Если такой вариант не сработает, тогда добавьте в блок server, который отвечает за редирект на https, в список доменов поддчёркивание: server_name _ site.com www.site.com; Это не сработало для меня. Может еще какие-то варианты? nginx/1.16.1 Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) ВОт содержание файла /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; } } Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер 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Правильно я убрал лишнее, или что-то еще нужно убрать? Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Проблема с поиском и чпу (nginx + php fpm) Автор: arki, 21 липня 2020 nginx редиректы nginx + php fpm редиректы (і ще %d) Теги: nginx редиректы nginx + php fpm редиректы seopro чпу seo чпу 0 відповідей 1 128 переглядів arki 21 липня 2020 Nginx Редирект не работает Автор: fduw, 25 квітня 2020 nginx редиректы nginx 2 відповіді 1 021 перегляд fduw 26 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Послуги Системне адміністрування (налаштування хостингу, серверів, ПЗ) Nginx + php fpm редиректы Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV
sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 1 час назад, magneto2010 сказал: просто подражаю большинству популярных магазинов, авторитетным ресурсам да и просто как по мне солидней выглядит. ИМХО. ну так это старые монстры. было время когда деревья... интернет был медленный и сайты начинались только с WWW. Сейчас есть тенденция упрощать жизнь пользователям, т. е. давать возможность набирать более короткие названия. Долой лишнюю информацию! Ее и так много в нашей жизни. А, вообще, у вас браузер неправильный. Правильный показывает без www 1 час назад, magneto2010 сказал: если большинство ведущих интернет площадок используют это, значит есть сок в чём-то? www.mvideo.ru? Домены то еще в прошлом веке созданы. Естественно, что им переход нежелателен как доменам со старой репутацией. А для новых доменов можно делать как нравится. Принципиальной разницы нет абсолютно никакой. Но в адресной строке уже никто не набирает "www", рудимент этот "www" по сути своей для старых сайтов. А для новых это атавизм. Ни хуже ни лучше от него, просто лишний "орган". Да, и всякие техносилы с мвидео не спешат переходить на https. В общем, спорить здесь бессмысленно - дело вкуса и не более. Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Да, из полезного. В основную секцию 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/ Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) 1 час назад, sitecreator сказал: Вы бы для интереса покликали по этим ссылкам У меня не работает почему-то ваш конфиг. Я нуб, в настройках 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; } } Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 10 минут назад, magneto2010 сказал: Вы бы для интереса покликали по этим ссылкам думаете, что я их не видел? Я четко выше написал, что они именно с www (сами домены), да и причину указал. Просто Яндекс, как я понимаю, идет по пути убирания лишней информации. В любом случае тут спорить не о чем - дело вкуса, не более. 15 минут назад, magneto2010 сказал: Был бы признателен, если сильны в этом, дать совет по улучшению/сокращению имеющегося кода а зачем у вас в блоке server, в котором есть редирект на https присутствует обработка php, gzip и прочее? До них ведь дело не дойдет, редирект ведь. Этот блок только для редиректа и нужен. Смотрите мои блоки для server. Ну и if многовато у вас. Можно и без них. Полезно также иметь редирект с "/index.php" на "/". Это так, если бегло. И где у вас редирект на www с "без www"? Он у вас реально работает на сайте? Также любопытно было бы узнать почему решили от Апаче отказаться? Есть немало скептиков такого перехода. Я сам для себя не могу пока дать однозначный ответ насчет nginx. Есть желание помониторить ситуацию на конкретном проекте, а дальше уже сделать вывод. Но как минимум пока для себя сделал вывод, что хуже не станет. Отрицательные моменты применительно для Опенкарт мне неизвестны пока. Потенциально положительные моменты, но которые в Опенкарт (дефолтном) пока не используются, я вижу. Опять же плюсы могут проявиться именно при большой загруженности. 1 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Вот такой код - это наследие Апача (образа мышления из его конфигов).: 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. 2 Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) У яндекса просто стиль выдачи другой, пока... Редирект этот 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 Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 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; } Надіслати Поділитися на інших сайтах More sharing options... 3 years later... redolf Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 Ребят гуглил примеры и не нашел подскажите пожалуйста как прописать 301 редирект в nigix страница site.com на site.com/en Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 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. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 Я использую связку apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) + opencart Проблем не возникает. Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 32 хвилини назад, Vorobiev сказав: Проблем не возникает. Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. 35 хвилин назад, Vorobiev сказав: apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 4 часа назад, Dotrox сказал: Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Перепутал.Заработался Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 У меня есть магазины на 30000 товаров и более и ниче.. Работают Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 13 січня 2021 Share Опубліковано: 13 січня 2021 В 11.01.2021 в 13:43, Vorobiev сказав: У меня есть магазины на 30000 товаров и более и ниче.. Работают А какие характеристики сервера? Надіслати Поділитися на інших сайтах More sharing options... 4 weeks later... Radprox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 Здравствуйте! Помогите пожалуйста настроить редиректы на 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; } } Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 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. Надіслати Поділитися на інших сайтах More sharing options... 001 Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 @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; } Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер Спасибо за ответ. @DotroxПравильно я убрал лишнее, или что-то еще нужно убрать? 11 часов назад, Dotrox сказал: Если такой вариант не сработает, тогда добавьте в блок server, который отвечает за редирект на https, в список доменов поддчёркивание: server_name _ site.com www.site.com; Это не сработало для меня. Может еще какие-то варианты? nginx/1.16.1 Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) ВОт содержание файла /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; } } Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер 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Правильно я убрал лишнее, или что-то еще нужно убрать? Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Проблема с поиском и чпу (nginx + php fpm) Автор: arki, 21 липня 2020 nginx редиректы nginx + php fpm редиректы (і ще %d) Теги: nginx редиректы nginx + php fpm редиректы seopro чпу seo чпу 0 відповідей 1 128 переглядів arki 21 липня 2020 Nginx Редирект не работает Автор: fduw, 25 квітня 2020 nginx редиректы nginx 2 відповіді 1 021 перегляд fduw 26 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Послуги Системне адміністрування (налаштування хостингу, серверів, ПЗ) Nginx + php fpm редиректы
sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Да, из полезного. В основную секцию 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/ Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) 1 час назад, sitecreator сказал: Вы бы для интереса покликали по этим ссылкам У меня не работает почему-то ваш конфиг. Я нуб, в настройках 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; } } Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 10 минут назад, magneto2010 сказал: Вы бы для интереса покликали по этим ссылкам думаете, что я их не видел? Я четко выше написал, что они именно с www (сами домены), да и причину указал. Просто Яндекс, как я понимаю, идет по пути убирания лишней информации. В любом случае тут спорить не о чем - дело вкуса, не более. 15 минут назад, magneto2010 сказал: Был бы признателен, если сильны в этом, дать совет по улучшению/сокращению имеющегося кода а зачем у вас в блоке server, в котором есть редирект на https присутствует обработка php, gzip и прочее? До них ведь дело не дойдет, редирект ведь. Этот блок только для редиректа и нужен. Смотрите мои блоки для server. Ну и if многовато у вас. Можно и без них. Полезно также иметь редирект с "/index.php" на "/". Это так, если бегло. И где у вас редирект на www с "без www"? Он у вас реально работает на сайте? Также любопытно было бы узнать почему решили от Апаче отказаться? Есть немало скептиков такого перехода. Я сам для себя не могу пока дать однозначный ответ насчет nginx. Есть желание помониторить ситуацию на конкретном проекте, а дальше уже сделать вывод. Но как минимум пока для себя сделал вывод, что хуже не станет. Отрицательные моменты применительно для Опенкарт мне неизвестны пока. Потенциально положительные моменты, но которые в Опенкарт (дефолтном) пока не используются, я вижу. Опять же плюсы могут проявиться именно при большой загруженности. 1 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Вот такой код - это наследие Апача (образа мышления из его конфигов).: 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. 2 Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) У яндекса просто стиль выдачи другой, пока... Редирект этот 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 Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 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; } Надіслати Поділитися на інших сайтах More sharing options... 3 years later... redolf Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 Ребят гуглил примеры и не нашел подскажите пожалуйста как прописать 301 редирект в nigix страница site.com на site.com/en Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 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. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 Я использую связку apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) + opencart Проблем не возникает. Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 32 хвилини назад, Vorobiev сказав: Проблем не возникает. Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. 35 хвилин назад, Vorobiev сказав: apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 4 часа назад, Dotrox сказал: Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Перепутал.Заработался Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 У меня есть магазины на 30000 товаров и более и ниче.. Работают Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 13 січня 2021 Share Опубліковано: 13 січня 2021 В 11.01.2021 в 13:43, Vorobiev сказав: У меня есть магазины на 30000 товаров и более и ниче.. Работают А какие характеристики сервера? Надіслати Поділитися на інших сайтах More sharing options... 4 weeks later... Radprox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 Здравствуйте! Помогите пожалуйста настроить редиректы на 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; } } Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 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. Надіслати Поділитися на інших сайтах More sharing options... 001 Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 @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; } Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер Спасибо за ответ. @DotroxПравильно я убрал лишнее, или что-то еще нужно убрать? 11 часов назад, Dotrox сказал: Если такой вариант не сработает, тогда добавьте в блок server, который отвечает за редирект на https, в список доменов поддчёркивание: server_name _ site.com www.site.com; Это не сработало для меня. Может еще какие-то варианты? nginx/1.16.1 Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) ВОт содержание файла /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; } } Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер 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Правильно я убрал лишнее, или что-то еще нужно убрать? Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Проблема с поиском и чпу (nginx + php fpm) Автор: arki, 21 липня 2020 nginx редиректы nginx + php fpm редиректы (і ще %d) Теги: nginx редиректы nginx + php fpm редиректы seopro чпу seo чпу 0 відповідей 1 128 переглядів arki 21 липня 2020 Nginx Редирект не работает Автор: fduw, 25 квітня 2020 nginx редиректы nginx 2 відповіді 1 021 перегляд fduw 26 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) 1 час назад, sitecreator сказал: Вы бы для интереса покликали по этим ссылкам У меня не работает почему-то ваш конфиг. Я нуб, в настройках 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; } } Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options...
sitecreator Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 10 минут назад, magneto2010 сказал: Вы бы для интереса покликали по этим ссылкам думаете, что я их не видел? Я четко выше написал, что они именно с www (сами домены), да и причину указал. Просто Яндекс, как я понимаю, идет по пути убирания лишней информации. В любом случае тут спорить не о чем - дело вкуса, не более. 15 минут назад, magneto2010 сказал: Был бы признателен, если сильны в этом, дать совет по улучшению/сокращению имеющегося кода а зачем у вас в блоке server, в котором есть редирект на https присутствует обработка php, gzip и прочее? До них ведь дело не дойдет, редирект ведь. Этот блок только для редиректа и нужен. Смотрите мои блоки для server. Ну и if многовато у вас. Можно и без них. Полезно также иметь редирект с "/index.php" на "/". Это так, если бегло. И где у вас редирект на www с "без www"? Он у вас реально работает на сайте? Также любопытно было бы узнать почему решили от Апаче отказаться? Есть немало скептиков такого перехода. Я сам для себя не могу пока дать однозначный ответ насчет nginx. Есть желание помониторить ситуацию на конкретном проекте, а дальше уже сделать вывод. Но как минимум пока для себя сделал вывод, что хуже не станет. Отрицательные моменты применительно для Опенкарт мне неизвестны пока. Потенциально положительные моменты, но которые в Опенкарт (дефолтном) пока не используются, я вижу. Опять же плюсы могут проявиться именно при большой загруженности. 1 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Вот такой код - это наследие Апача (образа мышления из его конфигов).: 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. 2 Надіслати Поділитися на інших сайтах More sharing options... magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) У яндекса просто стиль выдачи другой, пока... Редирект этот 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 Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 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; } Надіслати Поділитися на інших сайтах More sharing options... 3 years later... redolf Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 Ребят гуглил примеры и не нашел подскажите пожалуйста как прописать 301 редирект в nigix страница site.com на site.com/en Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 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. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 Я использую связку apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) + opencart Проблем не возникает. Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 32 хвилини назад, Vorobiev сказав: Проблем не возникает. Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. 35 хвилин назад, Vorobiev сказав: apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 4 часа назад, Dotrox сказал: Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Перепутал.Заработался Надіслати Поділитися на інших сайтах More sharing options... Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 У меня есть магазины на 30000 товаров и более и ниче.. Работают Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 13 січня 2021 Share Опубліковано: 13 січня 2021 В 11.01.2021 в 13:43, Vorobiev сказав: У меня есть магазины на 30000 товаров и более и ниче.. Работают А какие характеристики сервера? Надіслати Поділитися на інших сайтах More sharing options... 4 weeks later... Radprox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 Здравствуйте! Помогите пожалуйста настроить редиректы на 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; } } Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 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. Надіслати Поділитися на інших сайтах More sharing options... 001 Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 @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; } Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер Спасибо за ответ. @DotroxПравильно я убрал лишнее, или что-то еще нужно убрать? 11 часов назад, Dotrox сказал: Если такой вариант не сработает, тогда добавьте в блок server, который отвечает за редирект на https, в список доменов поддчёркивание: server_name _ site.com www.site.com; Это не сработало для меня. Может еще какие-то варианты? nginx/1.16.1 Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) ВОт содержание файла /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; } } Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер 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Правильно я убрал лишнее, или что-то еще нужно убрать? Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 Вот такой код - это наследие Апача (образа мышления из его конфигов).: 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. 2 Надіслати Поділитися на інших сайтах More sharing options...
magneto2010 Опубліковано: 1 березня 2017 Автор Share Опубліковано: 1 березня 2017 (змінено) У яндекса просто стиль выдачи другой, пока... Редирект этот 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 Змінено 1 березня 2017 користувачем magneto2010 Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 1 березня 2017 Share Опубліковано: 1 березня 2017 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; } Надіслати Поділитися на інших сайтах More sharing options...
redolf Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 Ребят гуглил примеры и не нашел подскажите пожалуйста как прописать 301 редирект в nigix страница site.com на site.com/en Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 10 січня 2021 Share Опубліковано: 10 січня 2021 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. Надіслати Поділитися на інших сайтах More sharing options...
Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 Я использую связку apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) + opencart Проблем не возникает. Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 32 хвилини назад, Vorobiev сказав: Проблем не возникает. Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. 35 хвилин назад, Vorobiev сказав: apache2 ( для статики и ЧПУ ) + nginx ( для динамики и картинок ) Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Надіслати Поділитися на інших сайтах More sharing options...
Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 4 часа назад, Dotrox сказал: Как будет у вас товаров хотя бы тысяч 10 и магазин ляжет из-за "DDoS" от поисковых ботов, тогда то проблемы и возникнут Хотя, если у вас неограниченный бюджет на хостинг, то можно и с Апачем жить. Вы либо не понимаете что такое статика и динамика, либо у вас всё настроено вверх ногами. Статика - это css, js и картинки. И вот эту статику в любом случае должен обрабатывать nginx! А динамика - это то, что генерирует php и только ради этого Апач вообще и используется, если используется. Собственно, Апач в своё время так прижился именно потому, что его mod_php в те далёкие времена был единственным адекватным способом запускать php для веба. Но уже много лет существует php-fpm, который, во-первых, не нуждается ни в каком дополнительном софте для работы, а во-вторых, изначально разрабатывался в Badoo для решение их проблем с высокими нагрузками. Перепутал.Заработался Надіслати Поділитися на інших сайтах More sharing options...
Vorobiev Опубліковано: 11 січня 2021 Share Опубліковано: 11 січня 2021 У меня есть магазины на 30000 товаров и более и ниче.. Работают Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 13 січня 2021 Share Опубліковано: 13 січня 2021 В 11.01.2021 в 13:43, Vorobiev сказав: У меня есть магазины на 30000 товаров и более и ниче.. Работают А какие характеристики сервера? Надіслати Поділитися на інших сайтах More sharing options...
Radprox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 Здравствуйте! Помогите пожалуйста настроить редиректы на 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; } } Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 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. Надіслати Поділитися на інших сайтах More sharing options...
001 Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 @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; } Надіслати Поділитися на інших сайтах More sharing options...
Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер Спасибо за ответ. @DotroxПравильно я убрал лишнее, или что-то еще нужно убрать? 11 часов назад, Dotrox сказал: Если такой вариант не сработает, тогда добавьте в блок server, который отвечает за редирект на https, в список доменов поддчёркивание: server_name _ site.com www.site.com; Это не сработало для меня. Может еще какие-то варианты? nginx/1.16.1 Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options...
Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) ВОт содержание файла /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; } } Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options...
Radprox Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) Спойлер 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Правильно я убрал лишнее, или что-то еще нужно убрать? Змінено 7 лютого 2021 користувачем Radprox Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts