Цель установки обратного прокси сервера - подмена конечной ссылки того или иного корпоративного сервиса на свою ссылку. Чаще всего это различные программы 1С с установленным веб-сервером. .
Предположим есть 4 сервиса со следующими ссылками для конечного пользователя:
- 1sfresh.ru/kjbehr
- 1scloud.ru/sjhdbu
- service.ru/fhtfvhh
- service.ru/khfdvho
Реальные ссылки могут быть длиннее, с поддоменами и, главное, не удобны для запоминания.
Для внутренних целей необходимо использовать собственный домен mydomain.ru.
Ниже пример сопоставления / подмены ссылок:
- 1sfresh.ru/kjbehr/* --> mydomain.ru/fresh/*
- 1scloud.ru/sjhdbu/* --> mydomain.ru/cloud/*
- service.ru/fhtfvhh/* --> mydomain.ru/sedo/*
- service.ru/khfdvho/* --> mydomain.ru/dir/kedo/*
На nginx по мануалу не совсем получается, фактически успешная подмена происходит только домена, а вот путь - нет. ссылка заменяется на оригинальный
- 1sfresh.ru/kjbehr/* --> mydomain.ru/fresh/* --> mydomain.ru/kjbehr/*
- 1scloud.ru/sjhdbu/* --> mydomain.ru/cloud/* --> mydomain.ru/sjhdbu/*
- service.ru/fhtfvhh/* --> mydomain.ru/sedo/* --> mydomain.ru/fhtfvhh
- service.ru/khfdvho/* --> mydomain.ru/dir/kedo/* --> mydomain.ru/khfdvho
Есть ли решение этой задачи?
PS Пробовали только на nginx, доступа к конфигурации сервисов нет- это чужие сервисы.
UPD Конфигурация
server {
server_name mydomain.ru;
access_log /var/log/nginx/mydomain-access.log;
error_log /var/log/nginx/mydomain-error.log;
# return 301 https://$server_name$request_uri;
# proxy_read_timeout 600;
}
server {
listen 443 ssl;
server_name mydomain.ru;
access_log /var/log/nginx/mydomain-ssl-access.log;
error_log /var/log/nginx/mydomain-ssl-error.log;
ssl_certificate /etc/letsencrypt/live/mydomain.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.ru/privkey.pem; # managed by Certbot
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
location /.well-known/acme-challenge/ {
root /var/www/acme;
}
location /fresh/ {
proxy_pass https://1sfresh.ru/kjbehr/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
}
location /kjbehr/ {
proxy_pass https://1sfresh.ru/kjbehr/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
}
}