Nginx Обратный прокси для Secure WebSocket с двумя отдельными серверами - PullRequest
0 голосов
/ 11 февраля 2020

Я много искал об этом, но как-то не смог понять.

Вот краткий обзор моего случая:

У меня есть клиентский сервер, который работает на Apache + Cpanel с сертификатом letsencrypt ssl. Когда пользователь нажимает на ссылку, он пытается подключиться wss: // nodeserverip: порт

На nodejs стороне сервера, я использую nginx для обратного прокси-сервера, но я не смог его настроить. Оба сервера работают на Centos. Схема, которую я хочу, чтобы это было:

Пользователь нажимает на ссылку -> wss: // NodejsServerip: port1 -> (соединение с NodejsServer) proxy_pass http://NodejsServerip : port2 -> ответить клиенту

Я использую s эльфийский сертификат для NodejsServer. В этом случае либо я получаю ошибку ERR_CERT_AUTHORITY_INVALID, либо ERR_SSL_PROTOCOL_ERROR в журнале консоли в соответствии с моей конфигурацией.

Вот мой nginx файл default.conf:

server {
    listen       8080 ssl;
    listen       [::]:8080 ssl ipv6only=on;
    server_name  client.website.address;
    #root         /usr/share/nginx/html;

    #ssl_verify_client on;
    #ssl_verify_client off;
    #ssl_client_certificate /etc/nginx/certs/privkey.pem;

    ssl_certificate /etc/nginx/certs/client.crt;
    ssl_certificate_key /etc/nginx/certs/client.key;

    #ssl_session_cache shared:le_nginx_SSL:1m;
    #ssl_session_timeout 1d;
    #ssl_session_tickets off;

    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 SSLv2 SSLv3;
    #ssl_prefer_server_ciphers on;
    #ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    #ssl_ecdh_curve secp384r1;

    #ssl_stapling on;
    #ssl_stapling_verify on;

    #add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload;";
    #add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; script-src 'self'; img-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self';";
    #add_header Referrer-Policy "no-referrer, strict-origin-when-cross-origin";
    #add_header X-Frame-Options SAMEORIGIN;
    #add_header X-Content-Type-Options nosniff;
    #add_header X-XSS-Protection "1; mode=block";

    # Load configuration files for the default server block.
    #include /etc/nginx/default.d/*.conf;

    location / {
        #proxy_ssl_verify off;
        #proxy_ssl_verify on;
        #proxy_ssl_certificate     /etc/nginx/certs/client.crt;
        #proxy_ssl_certificate_key /etc/nginx/certs/client.key;
        #proxy_ssl_trusted_certificate /etc/nginx/certs/client.crt;
        proxy_buffering off;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:2020;
        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 (nginx 1.4)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

}

...