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