У меня дома есть панель управления солнечной панелью, которая работает на каком-то дистрибутиве Linux. Он обслуживает веб-страницу html5 / js через HTTP. (Нет способа настроить SSL на этом хосте)
Я хочу прокси-сервер с NGINX (другой хост), чтобы иметь возможность получить доступ ко всему этому через HTTPS для интеграции с другими системами домашней автоматизации.
Устройство (назовем его Венерой) использует порт 80 (HTTP), 81 (VNC websockify, не приоритет, но приятно иметь), 7890 (ws: //) и 9001 (ws: //)
У меня есть настройка nginx (насколько я знаю) для прослушивания этих портов, так как порты данных веб-страницы жестко заданы в конфигурации (чтобы получить показания информации в системе, он пытается получить их от localhost, поэтому я передаю их от nginx до Венеры)
Я потратил более 4 дней на поиск, попытку настройки и т. Д. В приведенном ниже коде, когда я раскомментирую SSL и сертификаты SSL, я могу подключиться через HTTP.
Полная конфигурация здесь: https://pastebin.com/fgwgsTnF
Внутри http config:
upstream websockets {
server VENUS-IP:9001;
server VENUS-IP:7890;
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
listen 443 ssl http2;
server_name nginx.localdomain.nl;
ssl_certificate /usr/local/etc/nginx/certs/cert.crt;
ssl_certificate_key /usr/local/etc/nginx/certs/cert.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security max-age=15768000;
location /app {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://VENUS-IP;
proxy_read_timeout 90;
proxy_redirect http://VENUS-IP https://nginx.localdomain.nl;
}
server {
server_name nginx.localdomain.nl;
listen 9001; # ssl;
#ssl_certificate /usr/local/etc/nginx/certs/cert.crt;
#ssl_certificate_key /usr/local/etc/nginx/certs/cert.key;
location / {
# redirect all HTTP traffic
proxy_pass http://websockets;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
server {
server_name nginx.localdomain.nl;
listen 81 ssl;
ssl_certificate /usr/local/etc/nginx/certs/cert.crt;
ssl_certificate_key /usr/local/etc/nginx/certs/cert.key;
location /websockify {
websockify_pass websockets;
}
}
}
Я могу правильно проксировать все по HTTP, но как только я пытаюсь обслуживать WS по HTTPS, происходит сбой с предупреждением о смешанном содержимом. Я пробовал дюжину комбинаций, но все они провалились.
https://community.victronenergy.com/storage/attachments/3384-1559169860907.png
Пожалуйста, сообщите.