Перейти к содержимому

Как в nginx обрабатывать ссылки на кириллице

  • автор:

Как правильно настроить Кириллический домен в Nginx с WildCard ?

сейчас рабочая конфигурация такая (домен для примера, не существующий):

# cat /etc/nginx/sites-available/xn--80aaelc0ahlnavr8c.xn--p1ai server < listen 80; server_name www.xn--80aaelc0ahlnavr8c.xn--p1ai .xn--80aaelc0ahlnavr8c.xn--p1ai; set $main_host 'xn--80aaelc0ahlnavr8c.xn--p1ai'; if ($host != $main_host) < rewrite ^(.*)$ http://$main_host$1 permanent; break; >access_log /var/log/nginx/xn--80aaelc0ahlnavr8c.xn--p1ai.access.log; error_log /var/log/nginx/xn--80aaelc0ahlnavr8c.xn--p1ai.error.log; root /var/www/$main_host/www; index index.php index.html index.htm; location / < try_files $uri $uri/ /index.php?$args; >location ~ \.php$ < include /etc/nginx/conf.d/fastcgi_params.conf; fastcgi_param SCRIPT_FILENAME /var/www/$main_host/www$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT /var/www/$main_host/www; fastcgi_param PHP_ADMIN_VALUE upload_tmp_dir=/var/www/$main_host/tmp/upload; fastcgi_param PHP_ADMIN_VALUE session.save_path=/var/www/$main_host/tmp/sessions; >location ~ /\. < deny all; access_log off; log_not_found off; >> 

что и как поменять в конфиге домена nginx, чтобы работал вайлдкард на idn-домене?

tlito
17.11.15 12:13:09 MSK

Что именно не работает? Если задавать домен в IDN, то всё работает.

Oxana
( 19.11.15 22:20:37 MSK )
Ответ на: комментарий от Oxana 19.11.15 22:20:37 MSK

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

server_name www.xn--80aaelc0ahlnavr8c.xn--p1ai .xn--80aaelc0ahlnavr8c.xn--p1ai; 

так не работает:

server_name www.xn--80aaelc0ahlnavr8c.xn--p1ai *.xn--80aaelc0ahlnavr8c.xn--p1ai; 

так тоже не работает:

server_name *.xn--80aaelc0ahlnavr8c.xn--p1ai www.xn--80aaelc0ahlnavr8c.xn--p1ai; 

tlito
( 19.11.15 22:36:12 MSK ) автор топика
Ответ на: комментарий от tlito 19.11.15 22:36:12 MSK

Обычно делают так:

server < server_name *.xn--80aaelc0ahlnavr8c.xn--p1ai; return 301 http://xn--80aaelc0ahlnavr8c.xn--p1ai$request_uri; >server

Что в логах ошибок с Вашей конфигурацией? Для nginx что IDN, что не IDN — все едино.

Oxana
( 20.11.15 02:57:17 MSK )
Ответ на: комментарий от Oxana 20.11.15 02:57:17 MSK

я сделал такую конфигурацию

/etc/nginx/sites-available# cat xn--80aaelc0ahlnavr8c.xn--p1ai server < listen 80; server_name *.xn--80aaelc0ahlnavr8c.xn--p1ai; return 301 http://xn--80aaelc0ahlnavr8c.xn--p1ai$request_uri; set $main_host 'xn--80aaelc0ahlnavr8c.xn--p1ai'; if ($host != $main_host) < rewrite ^(.*)$ http://$main_host$1 permanent; break; >access_log /var/log/nginx/xn--80aaelc0ahlnavr8c.xn--p1ai.access.log; error_log /var/log/nginx/xn--80aaelc0ahlnavr8c.xn--p1ai.error.log; root /var/www/$main_host/www; index index.php index.html index.htm; location / < try_files $uri $uri/ /index.php?$args; >location ~ \.php$ < include /etc/nginx/conf.d/fastcgi_params.conf; fastcgi_param SCRIPT_FILENAME /var/www/$main_host/www$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT /var/www/$main_host/www; fastcgi_param PHP_ADMIN_VALUE upload_tmp_dir=/var/www/$main_host/tmp/upload; fastcgi_param PHP_ADMIN_VALUE session.save_path=/var/www/$main_host/tmp/sessions; >location ~ /\. < deny all; access_log off; log_not_found off; >> 

не работает. открывает вместо этого сайта дефолтный сайт: сообщение Welcome to nginx. в логах этого сайта — ничего. а в логах дефолтного сайта

55.55.55.88 - - [20/Nov/2015:15:02:26 +0200] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36" 55.55.55.88 - - [20/Nov/2015:15:04:06 +0200] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36" 55.55.55.88 - - [20/Nov/2015:15:04:08 +0200] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"

Как разобраться с кириллицей в запросе?

Добрый день. Возникла проблема с отправкой запроса на сервер, а именно — то что он на кириллице. Да, действительно можно преобразовать URL в punycode, но вся беда в том, что при переходе через punycode, сайт сам запрашивает редерикт на основной кир. домен.

Мне необходимо отправить POST запрос на сервер, а сделать я этого не могу — постоянная ошибка 301, из-за того что сервер редериктит на кириллицу.

Есть ли способ как то обойти редерикт, или дать запросу понять кириллицу, чтобы редерикта не происходило?

POST /wp-admin/admin-ajax.php/ HTTP/1.1 Host: xn--1-7sbirdczi9n.xn--p1ai Authorization: Basic c2l0ZTR5b3U6c2l0Z Upgrade-Insecure_Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.99 Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: cross-site Sec-Fetch-User: ?1
  • Вопрос задан 24 дек. 2022
  • 122 просмотра

5 комментариев

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

Nginx проблема с кириллицей в product/search

HtwwtH

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Войти

Уже зарегистрированы? Войдите здесь.

Больше способов поделиться.

Похожие публикации

Проблема з пошуком артикулів в модулі Ajax Live Search

Автор: Nimbly, 8 октября

Количество выявленных страниц в Search Console

Автор: zhizherinv, 16 октября

Search suggestion — поиск с автодополнением PRO
  • поиск
  • search
  • (и ещё 5)
  • 0 комментариев
  • 34 675 просмотров
  • sv2109
  • 8 марта 2015
Шрифт Montserrat для кириллицы

Автор: Innokenty, 14 июля 2018

Search Admin — улучшенный поиск товаров в админке
  • поиск
  • товар
  • (и ещё 1)

Сейчас на странице 0 пользователей

  • Нет пользователей, просматривающих эту страницу.

Покупателям

  • Оплата дополнений физическими лицами
  • Оплата дополнений юридическими лицами
  • Политика возвратов

Разработчикам

  • Регламент размещения дополнений
  • Регламент продаж и поддержки дополнений
  • Виртуальный аккаунт автора
  • Политика продвижения объявлений
  • API каталога дополнений
  • Урегулирование споров по авторским правам

Полезная информация

  • Публичная оферта
  • Политика возвратов
  • Политика конфиденциальности
  • Платежная политика
  • Политика Передачи Персональных Данных
  • Политика прозрачности

Последние дополнения

Движок интернет магазина OpenCart (ocStore) — официальный сайт OpenCartForum.com Powered by Invision Community

  • Уже зарегистрированы? Войти
  • Регистрация
Раздел покупок
ocStore
  • Назад
  • Официальный сайт
  • Демо ocStore 3.0.3.2
  • Демо ocStore 2.3.0.2.4
  • Скачать ocStore
  • Документация
  • История версий ocStore
Шаблоны
OpenCart.Pro
  • Создать.

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.

Встраивание административного интерфейса через iframe

Административный интерфейс Webim можно встроить в страницы какого-либо иного веб-сервиса через iframe. Наиболее часто данная функция используется для встраивания в сторонний CRM с веб-интерфейсом. Такое использование повышает эффективность работы оператора, потому что ему больше не требуется держать открытыми две вкладки и переключаться между ними.

Настройка nginx

Для облачных клиентов, у которых сервис Webim расположен на серверах компании ООО «ВЕБИМ.РУ», требуется обратиться в службу технической поддержки Webim.

Для корректной настройки требуется выполнить следующие пункты:

    В настройках веб-сервера nginx, который обслуживает ваш аккаунт Webim, нужно изменить настройки, отвечающие за выдачу контента через фреймы.

N.B. Необходимо редактировать настройки сервера, который обслуживает именно chat.mycompany.com , на котором расположен сервис Webim, а не CRM, в которую будет встроен iframe .

Найдите директорию с настройками nginx и создайте в этой директории файл iframe.conf . Путь зависит от особенностей начальной установки, например, он может выглядеть так:

/etc/nginx/conf/webim-config/common 
add_header X-Frame-Options "ALLOW-FROM localhost https://crm.company.com"; add_header Content-Security-Policy "frame-ancestors localhost crm.company.com"; 
/etc/nginx/conf/webim-config/sites-available/webim.conf 

Во все секции location , отвечающие за URL административного интерфейса, который Вы хотите сделать доступным в iframe , вставьте строку:

include /etc/nginx/webim-config/common/iframe.conf; 
  • /
  • /l/o/check-spelling2
  • ^(/l/v/(?:m/)?history|/l/[vo]/get-history|/internal/history/.+|/api/history/v[1-9]d*/.+)$
  • ^/webim/images(/avatar|department_logo|visitor_avatars|ainvite_avatar|site_logo|site_preview).*.(jpg|jpeg|gif|png)$
  • (get-image).php$
  • ^/(?!x)(?!l)(?!ws)(?!webim)(?!image-robot)(?!images)(?!cd2)(?!cdn)(?!cd)(?!images)(?!robots.txt)(?!api).+.(ico|gif|png|jpg|css|js|htm|html)$
  • ^/(images|css)(/.+)$
  • ^/webim/(images|css)(/.+)$
  • /l/(v|o)/download.*.(png|gif|jpe?g|webp|pdf|doc)$
  • /l/(v|o)/download/.*?([^/]+)$
  • /l/
  • /webim/operator.+.php$
  • .php$
  • >.(jpg|jpeg|gif|png|css|js)$
  • ^/api

Пример правильно отредактированной секции location :

Тег фрейма

Для того, чтобы на нужной странице работал iframe , в HTML-код страницы необходимо добавить тег iframe . Пример:

 

Данные, указываемые в теге iframe :

  • В поле src требуется вписать URL РМО оператора:
    • Пример URL для облачного аккаунта:
    https://mycompany.webim.ru/agent/ 
    • Пример URL для аккаунта, размещенного не на серверах Webim:
    https://chat.mycompany.com/agent/ 

    Взаимодействие между окнами

    Для взаимодействия между CRM, в которую встраивается сервис, и Webim через iframe существует метод postMessage . Он позволяет отправлять между окнами события, содержащие объекты ( object ).

    Для активации рассылки событий требуется добавить адреса страниц, на которые будут отправляться события, в конфигурации аккаунта:

    • Если у вас облачный аккаунт, обратитесь в службу технической поддержки Webim для добавления в конфигурацию аккаунта URL на которые требуется отправлять события.
    • Если сервис Webim размещен на ваших серверах, требуется добавить в поле operator_iframe_allowed_parent_origin в конфигурации аккаунта URL на которые требуется отправлять события.

    Для того, чтобы сайт, в который встраивается Webim, мог получать события, на нём должен быть активен слушатель события message . При получении события также должен вызываться его обработчик, который реализует требуемые функции. Из соображений безопасности требуется проверять адрес, с которого приходит событие. Оно передается в поле origin . Пример реализации:

    window.addEventListener("message", receiveMessage, false); function receiveMessage(event) < if (event.origin !== "origin_url") return Exception(); // . >

    Вместо origin_url должен быть указан URL РМО оператора. При несоответствии origin адресу РМО обработка этого события не должна продолжаться.

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

    Работа с внешними ссылками

    Все внешние ссылки при работе с iframe будут продолжать открываться в новом окне, а не внутри iframe . Например, если посетитель отправит ссылку на внешний ресурс или картинку, находящуюся на внешнем ресурсе, нажатие на эту ссылку или картинку приведёт к открытию в браузере нового окна.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *