Назад | Перейти на главную страницу

Перенаправление Nginx для определенного расширения файла

У меня проблемы с настройкой перенаправления для расширения Magento. Запрошенный URL:

example.com/index.php/Cdiscount/Package/download/type/offers/filename/BMS_PREFIX_161d529d7c3ef4b5ae1dca92e2334de6/BMS_PREFIX_161d529d7c3ef4b5ae1dca92e2334de6.zip

но nginx должен вернуть:

example.com/index.php/Cdiscount/Package/download/type/offers/filename/BMS_PREFIX_161d529d7c3ef4b5ae1dca92e2334de6 

вместо.

Часть между BMS_PREFIX_ и .zip будет часто меняться, поэтому, вероятно, он должен получать все запросы файлов .zip в предложениях / местоположении. Я не уверен на 100%, что имя файла в offers/filename/BMS_PREFIX... настраивается как что-то другое или изменяется по запросу, но я предполагаю, что это не изменится.

Итак, в основном мне нужно сказать Nginx, чтобы он ответил example.com/path/ когда запрос на example.com/path/path.zip запрашивается.

текущая конфигурация:

location / {
    proxy_pass http://127.0.0.1:6081;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #proxy_hide_header X-Varnish;
    proxy_hide_header Via;
    proxy_hide_header Vary;
    proxy_hide_header X-Server;
    proxy_hide_header X-Backend-Server;
    proxy_hide_header X-Frame-Options;
    proxy_redirect off;
    proxy_max_temp_file_size 0;
    proxy_connect_timeout      7200;
    proxy_send_timeout         7200;
    proxy_read_timeout         7200;
    proxy_buffer_size          256k;
    proxy_buffers              4 512k;
    proxy_busy_buffers_size    512k;
    proxy_temp_file_write_size 512k;
}

Может вы имеете в виду что-то вроде этого

rewrite ^(/index\.php/Cdiscount/Package/download/type/offers/filename/BMS_PREFIX_)(.+?)/BMS_PREFIX_(.+).zip $1$2;

Добавить строку выше перед proxy_pass заявление.

Ноты:

  • Чтобы проверить, работает ли перезапись, либо ведите журнал запросов на настройку в Magento, либо вы можете использовать rewrite_log автор: nginx
  • Эта перезапись не проверяет, BMS_PREFIX после имени файла и BMS_PREFIX перед .zip та же строка. Другими словами, запрос example.com/path/otherpath.zip все равно будет переписано на example.com/path
  • Для объяснения этой схемы регулярных выражений см. Вот.