Протокол WebSocket отличается от протокола HTTP, но подтверждение связи WebSocket совместимо с HTTP. Используйте инструмент обновления HTTP, чтобы обновить соединение с HTTP на WebSocket. Это позволяет приложениям WebSocket легче вписываться в существующую инфраструктуру. Например, приложения WebSocket могут использовать стандартные порты HTTP 80 и 443, что позволяет использовать существующие правила брандмауэра.
Websocket
мониторинг протоколада8282
端口pem/crt
документы иkey
документ)гипотезапоставь это/etc/nginx/conf.d/ssl
下443
Порт предоставляется внешнему мируwss
агентское обслуживаниедоменное имя.com/wss
какwss
вход через прокси。То естьда Адрес подключения клиента wss://доменное имя.com/wss
。NGINX поддерживает WebSockets, позволяя туннелировать между клиентами и внутренними серверами. Чтобы NGINX мог отправлять запросы на обновление от клиента на внутренний сервер, заголовки Upgrade и Connection должны быть установлены явно, как показано в этом примере:
location /ws/ {
proxy_pass http://wsbackend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
После завершения NGINX обрабатывает его как соединение WebSocket.
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server 192.168.100.10:8010;
server 192.168.100.11:8010;
server 192.168.100.12:8010;
}
server {
listen 80;
server_name api.tinywan.com;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}
}
}
консольный тест
ws = new WebSocket("ws://api.tinywan.com");
ws.onopen = function() {
alert("Соединение успешно выполнено");
ws.send('Tinywan');
alert("Отправить на сервер строку: tom");
};
ws.onmessage = function(e) {
alert("Получено сообщение от сервера:" + e.data);
};
WSS — это сокращение от Web Socket Secure, которое представляет собой зашифрованную версию WebSocket. Данные в WebSocket не зашифрованы, но незашифрованные данные могут быть легко украдены людьми со скрытыми мотивами. Поэтому для обеспечения безопасности данных WebSocket объединяется с SSL для обеспечения безопасной связи WebSocket, а именно WebSocket Secure.
WebSocketПротокол определяетWebSocket(
WS://
)а такжеWebSocketБезопасность(WSS://
)Два префикса,WebSocket использует HTTP-подтверждение, а затем обновляется до протокола WebSocket для связи.,WebSocket Security (WSS) использует рукопожатие HTTPS, а затем обновляется до безопасного протокола WebSocket.,WSS
На самом деледаWS+TLS
。Так что простоwebsocketпротоколна основевключатьSSLмогу поддержатьwssпротокол。
server {
listen 443;
server_name api.tinywan.com;
ssl on;
ssl_certificate /etc/ssl/server.pem;
ssl_certificate_key /etc/ssl/server.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
location /wss
{
proxy_pass http://127.0.0.1:8282;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
# location / {} Другая конфигурация сайта...
}
консольный тест
ws = new WebSocket("wss://api.tinywan.com/wss");
ws.onopen = function() {
alert("Соединение успешно выполнено");
ws.send('Tinywan');
alert("Отправить на сервер строку: tom");
};
ws.onmessage = function(e) {
alert("Получено сообщение от сервера:" + e.data);
};