В Google Cloud Platform у нас есть haproxy, который служит прокси для нашей внутренней VPN и выполняет перенаправления URL-адресов с GCP DNS на proxy.mycompany.com (наш haproxy), где мы делаем дальнейшие манипуляции.
Haproxy
от изображения 2.0.8-alpine
Nginx
основано на изображении 1-alpine
В последнее время я установил nginx, который обслуживает данные c files.
Nginx настроен для autoindex on
, доступен по URL static-files.mycompany.com
и настроен для показа root gcs-bucket. Поэтому, если вы зайдете на static-files.mycompany.com
, вы увидите содержимое gcs-bucket:
- каталог
static-files
- любой файл в корзине.
Каталог static-files
содержит stati c файлы веб-сайта, сгенерированные hu go. Эти файлы содержат пути, такие как /docu/file.md
Мне удалось настроить haproxy, чтобы он перенаправлял любые запросы на URL website.mycompany.com
на static-files.mycompany.com/static-files
и отображал сгенерированный веб-сайт stati c, настроив его в backend section
конфигурации haproxy:
acl p_root path -i /
http-request set-path /static-files/\1 if p_root
Каждый раз, когда я посещаю website.mycompany.com
, путь перенаправляется на website.mycompany.com/static-files
(что на самом деле static-files.mycompany.com/static-files
)
Однако сайт не работает :
- css не загружается, файл находится в / и запросы нацелены на
website.mycompany.com/mycss.file
, но файл можно найти в website.mycompany.com/static-files/mycss.file
из-за манипуляции пути выше - Каждая ссылка на сайте не работает, запрашивает
website.mycompany.com/my-link-to-file
, но файл находится под website.mycompany.com/static-files/my-link-to-file
У меня ограниченная возможность настроить haproxy, скорее всего, я могу добавить параметры в существующие разделы бэкэнда и внешнего интерфейса здесь я предоставляю параметры, которые я не могу изменить :
global
log stdout format raw local0 info
maxconn 30000
tune.ssl.default-dh-param 2048
resolvers vpc
parse-resolv-conf
hold valid 120s
defaults
mode http
log global
option dontlognull
#option tcplog
option httplog
option forwardfor
option redispatch
maxconn 3000
retries 3
timeout connect 5s
timeout client 50s
timeout server 50s
timeout tunnel 1h
timeout client-fin 30s
timeout http-keep-alive 4s
balance roundrobin
default-server check resolvers vpc
default-server on-marked-down shutdown-sessions
default-server max-reuse 100
frontend http
bind *:80
redirect scheme https code 302 if !{ ssl_fc }
monitor-uri /_healtz
use_backend %[hdr(host),lower]
frontend https
bind *:443 ssl no-sslv3 crt /config/haproxy_certificate.pem alpn http/1.1,h2
http-response add-header Via 1.1\ %[env(HOSTNAME)]
http-request add-header Via 1.1\ %[env(HOSTNAME)]
http-request add-header X-Forwarded-Proto https
http-request capture req.hdr(Host) len 40
http-request capture req.hdr(User-Agent) len 120
use_backend %[hdr(host),lower]
backend proxy.mycompany.com
stats enable
stats uri /
Я хотел бы добиться следующего:
Посещая website.mycompany.com
I будет перенаправлен на static-files.mycompany.com/static-files
в фоновом режиме, однако URL останется website.mycompany.com
, и, следовательно, сгенерированные пути к веб-сайту stati c будут работать, как и сайт stati c. Или я ошибаюсь?
Я открыт для любых разумных предложений.
спасибо