У нас есть внутренняя служба, которая должна загружать файлы в 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, используйте простой прокси. Вроде нужно что-то описанное Вот.