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

Преобразование HTTP-запроса в HTTPS через Apache и Squid

У нас есть внутренняя служба, которая должна загружать файлы в S3, и весь исходящий трафик в настоящее время направляется через сервер Squid, которым я управляю. Служба, которая отправляет файлы, поддерживает только HTTP, но мы хотим, чтобы они были зашифрованы при переходе с прокси на S3. Похоже, что Squid не может сделать это изначально, поэтому я пытаюсь настроить Apache 2.2 на порту 80 на том же сервере Ubuntu, чтобы прозрачно переписать URL-адрес с http на https, а затем проксировать его через Squid на 3128. Я просто не сделал этого. смог определить правильную конфигурацию Apache для этого. Я думаю, это должно быть примерно так (предположим, что локальный IP-адрес 10.1.2.3):

<VirtualHost 10.1.2.3>
    ServerName 10.1.2.3
    RewriteEngine on
    RewriteCond %{HTTPS} !=on
    RewriteCond %{SERVER_NAME} /\.s3-.*amazonaws\.com/
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
    ProxyRequests on
    <Proxy *>
        Order deny,allow
        Deny from all
        Allow from 10.0.0.0/8 # for example
    </Proxy>
    # now need to send rewritten https request through squid at 10.1.2.3:3128
</VirtualHost>

Это последний комментарий, который я не смог понять. Какие-либо предложения?

Даже если вам нужен squid для некоторых расширенных функций прокси, я бы использовал nginx для простоты перенаправления и обработки заголовков http. Nginx также может обрабатывать кеширование.

Попробуйте что-то подобное в /etc/nginx/conf.d/mysite.conf

при необходимости замените путь кэша и имена служб.

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m 
max_size=10g inactive=60m use_temp_path=off;

server {
    listen 80;
    server_name localhost 10.1.2.3;
    location / {
        proxy_cache my_cache;
        proxy_pass https://servicename.s3.amazonaws.com/;
    }
}

Не используйте для этого Rewrite, используйте простой прокси. Вроде нужно что-то описанное Вот.