Задать вопрос

Как настроить обратный прокси сервер для подмены ссылки (не только домена) на различные сервисы?

Цель установки обратного прокси сервера - подмена конечной ссылки того или иного корпоративного сервиса на свою ссылку. Чаще всего это различные программы 1С с установленным веб-сервером. .

Предположим есть 4 сервиса со следующими ссылками для конечного пользователя:

  1. 1sfresh.ru/kjbehr
  2. 1scloud.ru/sjhdbu
  3. service.ru/fhtfvhh
  4. service.ru/khfdvho


Реальные ссылки могут быть длиннее, с поддоменами и, главное, не удобны для запоминания.
Для внутренних целей необходимо использовать собственный домен mydomain.ru.

Ниже пример сопоставления / подмены ссылок:

  1. 1sfresh.ru/kjbehr/* --> mydomain.ru/fresh/*
  2. 1scloud.ru/sjhdbu/* --> mydomain.ru/cloud/*
  3. service.ru/fhtfvhh/* --> mydomain.ru/sedo/*
  4. service.ru/khfdvho/* --> mydomain.ru/dir/kedo/*


На nginx по мануалу не совсем получается, фактически успешная подмена происходит только домена, а вот путь - нет. ссылка заменяется на оригинальный

  1. 1sfresh.ru/kjbehr/* --> mydomain.ru/fresh/* --> mydomain.ru/kjbehr/*
  2. 1scloud.ru/sjhdbu/* --> mydomain.ru/cloud/* --> mydomain.ru/sjhdbu/*
  3. service.ru/fhtfvhh/* --> mydomain.ru/sedo/* --> mydomain.ru/fhtfvhh
  4. 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;
    }
}
  • Вопрос задан
  • 1311 просмотров
Подписаться 4 Средний 11 комментариев
Пригласить эксперта
Ответы на вопрос 2
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Вам нужен не доступ к сервисам, а развёрнутый сокращатель ссылок. То, что вы пытаетесь сделать, рано или поздно превратится в некрасивую простыню в конфиге.
Ответ написан
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы