Nginx как https прокси
Мне нужно настроить nginx как https прокси, но это не сработало:
$ export https_proxy="http://127.0.0.1:8081"
$ curl https://example.com
curl: (56) Received HTTP code 400 from proxy after CONNECT
Мой nginx.conf:
server {
listen 8081;
location / {
proxy_pass http://some.proxy.com:3128;
proxy_set_header Host $http_host;
}
}
1 ответ
Здесь есть недоразумение. Существует два типа http-прокси, которые являются двумя совершенно разными животными: обратный прокси и прямой прокси. Не смешивайте их.
Прямой прокси виден для клиентской ОС (например, export https_proxy
) или браузер. Клиентская сторона знает, что он должен говорить немного по-другому, и прямой прокси-сервер не ведет себя как обычный веб-сервер.
Обратный прокси-сервер является почти обычным веб-сервером, и его поведение невидимо для клиентской стороны. Пример nginx proxy_pass
, Существуют некоторые хитрые уловки для использования обратного прокси-сервера в качестве прямого http- прокси ограниченным способом, но он вообще не работает как прямой https- прокси из-за глагола CONNECT.
Таким образом, прямой прокси лучше называть "клиентским прокси". Обратный прокси-сервер будет "серверным прокси". (Прямой / обратный прокси - ужасная номенклатура, на мой взгляд.)
Не используйте nginx в качестве прямого прокси. Он предназначен для использования в качестве обычного веб-сервера или обратного прокси-сервера.