Прямой доступ к серверу Python с перенаправлением портов SSH завершается неудачно, но выполняется успешно с промежуточным nginx

Я использую переадресацию портов SSH - как замечательно проиллюстрировано и подробно описано здесь - получить доступ к моему серверу.

SSH port forwarding

Я провел больше времени, чем я » Хочу признать, что устранение неполадок, почему доступ к моему веб-серверу Python 404s. Полный вопрос для завершения здесь.

Моя проблема заключается в том, что если я использую переадресацию портов для прямой пересылки моих запросов на порт, на котором работает сервер Python (например, 8282), все запросы 404.

Сервер Python для простоты (обслуживает index.html, содержащий строку hello ):

python -m http.server 8282

Перенаправление порта SSH с хоста, к которому я хочу получить доступ:

ssh -L 8181:<farawayhost-ip>:8282 <sshuser>@<remotehost-ip>

Для последующего запросы на хосте с curl , я определил переменную окружения http_proxy :

export http_proxy=127.0.0.1:8181

По-видимому, запросы некорректны, так как они добавляются в начале IP-адреса. Для сравнения вот журнал Python http.server, сначала доступ к нему локально с сервера, затем с внешнего хоста, почему прямой доступ к серверу Python с переадресацией портов SSH завершается неудачно, а доступ через прокси-сервер Nginx завершается успешно?

0
задан 31 May 2017 в 11:38
1 ответ

Ваша проблема в том, что SSH туннель не является HTTP прокси (в то время как nginx является), поэтому установка http_proxy на конечную точку SSH туннеля заставляет curl посылать HTTP запросы в формате, подходящем для HTTP прокси, в то время как SSH туннель посылает эти запросы прямо в ваше питоновое приложение без какой-либо специальной обработки, как это делал бы HTTP прокси. При использовании SSH туннеля вам необходимо удалить переменную http_proxy и получить прямой доступ к вашему приложению с помощью curl http://localhost:8181/.

.
1
ответ дан 4 December 2019 в 16:14

Теги

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