nginx proxy_pass на https / сервер изображений не работает - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь прокси-сервер изображений imagekit.io, чтобы все запросы имели одинаковое доменное имя.

Пробовал несколько конфигураций на HTTPS-сервере nginx (с самозаверяющим сертификатом) и даже на HTTP-сервере.

Допустим, URL-адрес https://ik.imagekit.io/hj8sm3kk7/brochures/92/1579/suzuki-gsx-r150-615123.pdf

С нижеприведеннымКонфигурация, я пытаюсь нажать http://localhost.com:8800/brochures/92/1579/suzuki-gsx-r150-615123.pdf

server {
        listen       8800;
        server_name  localhost.com;

        location /brochures {   
            proxy_ignore_headers Set-Cookie;
           proxy_set_header Host ik.imagekit.io;                       
           # proxy_set_header X-Real-IP $remote_addr;
           # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header Pragma no-cache;
           proxy_set_header Accept $http_accept;
           proxy_set_header User-Agent $http_user_agent;
            proxy_set_header Accept-Encoding $http_accept_encoding;
            proxy_set_header Accept-Language $http_accept_language;
            proxy_set_header sec-fetch-mode navigate;
            proxy_set_header sec-fetch-site cross-site;
            proxy_set_header sec-fetch-user ?1;
            proxy_set_header :authority ik.imagekit.io;
            proxy_set_header :method GET;
            proxy_set_header :path $path;
            proxy_set_header :scheme https;
            proxy_set_header Upgrade-Insecure-Requests 1;

           proxy_pass https://ik.imagekit.io/hj8sm3kk7/brochures;
        }
}

Это, однако, работает:

http://localhost.com:8800/financial-advisor/mfs-investment-management-review открывает ту же страницу, что и https://smartasset.com/financial-advisor/mfs-investment-management-review

location /financial-advisor {                        
           proxy_ignore_headers Set-Cookie;
           proxy_set_header     Host          $host;                       
           proxy_set_header     X-Real-IP         $remote_addr;
           proxy_set_header     X-Forwarded-For         $proxy_add_x_forwarded_for;
           proxy_pass https://smartasset.com;
       }

1 Ответ

0 голосов
/ 26 октября 2019

Реальной проблемой оказалась проблема SSL с ik.imagekit.io, при использовании http:// вместо https:// в значении proxy_pass.


Оригинальный (и неправильный) ответЯ дал:


Первый пример требует манипулирования путем URL. Рассмотрим аналогичный подход:

location ~ ^/(brochures/.*) {
  # all the previous config you used should be added here
  proxy_pass  https://ik.imagekit.io/hj8sm3kk7/$1;
}

Это перенаправит запрос на правильный URL-путь, который отличается от исходного запроса. $1 - это часть пути URL запроса, которая соответствует первым скобкам (...).

...