Nginx配置教程:同时支持WSS和WS连接

需积分: 0 10 下载量 168 浏览量 更新于2024-08-04 收藏 3KB TXT 举报
"该文主要涉及如何在Nginx服务器上配置支持WSS(WebSocket over SSL/TLS)和WS(普通WebSocket)两种连接方式。" Nginx 是一个高性能的HTTP和反向代理服务器,同时也支持WebSocket协议。WebSocket提供了一种持久化的全双工通信渠道,使得客户端和服务器之间可以进行低延迟、高效率的数据交换。在安全的网络环境中,通常会使用WSS,它是在WebSocket之上增加SSL/TLS加密层,确保数据传输的安全性。 配置WSS和WS连接,首先需要确保Nginx服务器已经安装并运行。以下是一个基本的Nginx配置示例: 1. 用户和工作进程: ```nginx user nobody; worker_processes 1; ``` 2. 日志设置: ```nginx error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; pid logs/nginx.pid; ``` 3. 事件模块: ```nginx events { worker_connections 1024; } ``` 4. HTTP模块: ```nginx http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request"'; access_log logs/access.log main; sendfile on; keepalive_timeout 65; gzip on; } ``` 5. HTTPS配置: 这部分用于配置SSL/TLS支持,允许WSS连接: ```nginx map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream wsbackend { server localhost:8191; keepalive 1000; } server { listen 80; listen 443 ssl; server_name lzxbj.cn; ssl_certificate lzxbkj.cn_bundle.pem; ssl_certificate_key lzxbkj.cn.key; ssl_session_timeout 20m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_verify_client off; } ``` 6. WebSocket代理配置: ```nginx location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_pass http://wsbackend; } ``` 上述配置中,`proxy_pass` 指令将客户端请求转发到后端服务器(在这个例子中是本地的8191端口)。`proxy_set_header` 用于设置HTTP头部,以支持WebSocket升级。 通过以上配置,Nginx将能够处理来自客户端的WS和WSS请求,并将这些请求转发给后端的应用服务器。`listen` 指令用于监听HTTP(80端口)和HTTPS(443端口)连接,`ssl` 参数在443端口上启用SSL/TLS。`ssl_certificate` 和 `ssl_certificate_key` 分别指定SSL证书和私钥文件。`ssl_ciphers` 定义了使用的加密套件,`ssl_protocols` 限制了支持的TLS版本。 需要注意的是,这只是一个基础配置示例,实际生产环境中可能需要根据服务器环境和安全策略进行调整,例如添加额外的日志记录、限制速率、添加防火墙规则等。