череp nginx делать запрос к внешнему API.
На python код запроса к публичному https API nasa (для примера):
from urllib.request import urlopen, install_opener, build_opener, ProxyHandler, Request
proxy_support = ProxyHandler({"https": "http://localhost:80"}) # Ставлю прокси http://localhost:80
opener = build_opener(proxy_support)
install_opener(opener)
f = urlopen(Request('https://api.nasa.gov/planetary/earth/imagery/?lon=100.75&lat=1.5&date=2014-02-01&cloud_score=True&api_key=DEMO_KEY'))
От nginx жду что он получит на 80 порту запрос и отправил его куда следует (на https://api.nasa.gov). Получит ответ и вернёт в python. Погуглив и домыслев получилось вот что, не работает:
http {
access_log logs/acess.log mylog;
error_log logs/error.log;
server {
listen 80;
location / {
proxy_pass https://api.nasa.gov;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Подскажите как правильно сделать?
Возвращет: Tunnel connection failed: 400 Bad Request
В логе: 127.0.0.1 - [03/Oct/2018:20:38:30 +0300] -"CONNECT api.nasa.gov:443 HTTP/1.0" 400 173 -
В питоновом коде proxy support не нужен.
Обсуждают сегодня