diff --git a/rproxy b/rproxy index 9226f23..00ef63c 100644 --- a/rproxy +++ b/rproxy @@ -3,7 +3,7 @@ # Публикация локальных сервисов через SSH-туннели + nginx на VPS # https://github.com/l-ptrol/rProxy -VERSION="1.8.1" +VERSION="1.8.2" export PATH="/opt/bin:/opt/sbin:$PATH" CONF_DIR="/opt/etc/rproxy" CONF_FILE="$CONF_DIR/rproxy.conf" @@ -1207,6 +1207,12 @@ generate_nginx_conf() { # Гарантируем, что путь начинается с / [ "${path#/}" = "$path" ] && path="/$path" + + # Регулируем путь для корректного маппинга в proxy_pass + # Если локация /myapp, то proxy_pass http://.../ перенаправит /myapp/foo -> /foo + local location_path="$path" + # Для корня оставляем как есть, для подпутей добавляем опциональный слеш + [ "$path" != "/" ] && location_path="$path/" local stealth_host="$t_host" [ "$t_port" != "80" ] && stealth_host="$t_host:$t_port" @@ -1222,7 +1228,7 @@ generate_nginx_conf() { # Теперь эта функция генерирует ТОЛЬКО блок location # Основной конфиг сервера будет собираться отдельно cat > "$target_file" << NGINXEOF - location $path { + location $location_path { $auth_config proxy_pass http://127.0.0.1:$tunnel_port/; proxy_http_version 1.1; @@ -1265,7 +1271,13 @@ rebuild_vhost_config() { # Конфиг для домена cat > "$tmp_vhost" << EOF server { - listen $ext_port; +EOF + # Не выводим обычный listen 443, если сейчас будет выведен listen 443 ssl + if [ "$ext_port" != "443" ] || [ "$has_ssl" -eq 0 ]; then + echo " listen $ext_port;" >> "$tmp_vhost" + fi + + cat >> "$tmp_vhost" << EOF server_name "$domain"; proxy_buffering off; proxy_request_buffering off;