rproxy v1.8.6: экспериментальный sub_filter для коррекции путей в подпутях

This commit is contained in:
Petro1990 2026-03-14 23:02:21 +03:00
parent 0b99a95dad
commit c49f9ad7e0
1 changed files with 22 additions and 1 deletions

23
rproxy
View File

@ -3,7 +3,7 @@
# Публикация локальных сервисов через SSH-туннели + nginx на VPS
# https://github.com/l-ptrol/rProxy
VERSION="1.8.4"
VERSION="1.8.6"
export PATH="/opt/bin:/opt/sbin:$PATH"
CONF_DIR="/opt/etc/rproxy"
CONF_FILE="$CONF_DIR/rproxy.conf"
@ -497,6 +497,11 @@ do_add_interactive() {
path="${REPLY:-/}"
[ "${path#/}" = "$path" ] && path="/$path"
if [ "$path" != "/" ]; then
printf " ${YELLOW} СОВЕТ: Сложные интерфейсы (как у роутеров) могут плохо работать в подпутях.${NC}\n"
printf " ${YELLOW} Для стабильного UI лучше использовать поддомен (напр. app.domain.com) с путем /${NC}\n"
fi
if [ "$use_ssl" = "yes" ] && [ -z "$CERTBOT_EMAIL" ]; then
prompt "Введите Email для Certbot: "
CERTBOT_EMAIL="$REPLY"
@ -522,6 +527,11 @@ do_add_interactive() {
[ "${path#/}" = "$path" ] && path="/$path"
fi
if [ "$path" != "/" ]; then
printf " ${YELLOW} СОВЕТ: Сложные интерфейсы (как у роутеров) могут плохо работать в подпутях.${NC}\n"
printf " ${YELLOW} Для стабильного UI лучше использовать поддомен (напр. app.domain.com) с путем /${NC}\n"
fi
# Если VPS не определен автоматически — выбираем вручную
if [ -z "$vps_id" ]; then
select_vps_interactive
@ -1246,6 +1256,17 @@ generate_nginx_conf() {
proxy_cookie_path / "$path";
# Редиректы: если приложение шлет Location: /login, Nginx заменит на Location: $path/login
proxy_redirect / "$path";
# Экспериментальная замена ссылок в HTML/JS для работы в подпутях (v1.8.6)
if [ "$path" != "/" ]; then
# Убираем сжатие от бэкенда, чтобы Nginx мог видеть текст
proxy_set_header Accept-Encoding "";
sub_filter_once off;
sub_filter_types text/html text/css application/javascript application/json;
# Заменяем ссылки начинающиеся с / на /путь/
sub_filter '="/' '="$path/';
sub_filter '=\"/' '=\"$path/';
fi
}
NGINXEOF
}