С тех пор, как TradingView открыл поддержку веб-перехватчиков, я рвал на себе волосы, пытаясь понять, почему мой сервер не получает никаких сигналов. Я сделал следующее до сих пор:
- Убедитесь, что порты открыты, убедитесь, что TradingView действительно отправляет POST-запросы.
- Пробовал POSTing на сервере barebones nodejs, сервере flask и, наконец, обратном прокси-сервере nginx на сервер flask.
- Сделал перекрестные ссылки на входящие заголовки и тело POST на webhook.site, реплицировал их на Postman, а также на другие инструменты, и мой сервер принял их нормально.
Вы можете увидеть поступающие сигналы здесь: http://webhook.site/#!/48e29a5b-d266-4021-8b96-0039371b3643/2005d010-e3ae-4077-8808-af34491f5a4d/
Но где-то на пути доставки явно что-то идет не так, потому что в логах nginx и unix нет ни следа каких-либо запросов. Это определенно не проблема брандмауэра или CORS, иначе у меня была бы такая же проблема при репликации с помощью инструментов, верно? Кто-нибудь может помочь мне раскрыть это дело?
Вот мой конфиг nginx:
server {
listen 80;
server_name lunarlabs.org;
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name lunarlabs.org;
ssl_certificate /etc/letsencrypt/live/***.org/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/***.org/privkey.pem;
# ...
access_log /var/log/nginx.log;
error_log /var/log/nginxerror.log;
root /var/www/html/public;
index index.php;
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,X-Forwarded-For,content-length';
include proxy_params;
proxy_pass http://unix:/home/tvhook/***;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Демонстрационный сервер веб-перехватчиков, который я настроил, доступен по адресу https://lunarlabs.org/webhook — любой Данные POST в формате JSON должны возвращать 200. Но сигналы TradingView, похоже, действительно не нравятся моему серверу или моему серверу действительно не нравятся их запросы.