当前位置: 首页 > news >正文

Nginx反向代理WebSocket

Nginx 配置文件说明

在配置 Nginx 前先了熟悉一下配置文件的说明,方便更好的理解。

#全局设置
main # 运行用户
user www-data;    
# 启动进程,通常设置成和cpu的数量相等
worker_processes  1;# 全局错误日志及PID文件
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;# 工作模式及连接数上限
events {use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能worker_connections 1024; #单个后台worker process进程的最大并发链接数# multi_accept on; 
}#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {#设定mime类型,类型由mime.type文件定义include       /etc/nginx/mime.types;default_type  application/octet-stream;#设定日志格式access_log    /var/log/nginx/access.log;#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.sendfile        on;#将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞tcp_nopush      on;tcp_nodelay     on;#连接超时时间keepalive_timeout  65;#开启gzip压缩gzip  on;# gzip_disable "MSIE [1-6]\.(?!.*SV1)";#设定请求缓冲client_header_buffer_size    1k;large_client_header_buffers  4 4k;include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;#设定负载均衡的服务器列表upstream mysvr {#weigth参数表示权值,权值越高被分配到的几率越大#本机上的Squid开启80端口server 192.168.8.1:80 weight=5;server 192.168.8.2:80 weight=1;server 192.168.8.3:80 weight=6;}server {#侦听80端口listen       80;#定义使用www.xx.com访问server_name  www.xx.com;#设定本虚拟主机的访问日志access_log  logs/www.xx.com.access.log  main;#默认请求location / {root   /root;      #定义服务器的默认网站根目录位置index index.php index.html index.htm;   #定义首页索引文件的名称fastcgi_pass  www.xx.com;fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name; include /etc/nginx/fastcgi_params;}# 定义错误提示页面error_page   500 502 503 504 /50x.html;  location = /50x.html {root   /root;}#静态文件,nginx自己处理location ~ ^/(images|javascript|js|css|flash|media|static)/ {root /var/www/virtual/htdocs;#过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。expires 30d;}#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.location ~ \.php$ {root /root;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;include fastcgi_params;}#设定查看Nginx状态的地址location /NginxStatus {stub_status            on;access_log              on;auth_basic              "NginxStatus";auth_basic_user_file  conf/htpasswd;}#禁止访问 .htxxx 文件location ~ /\.ht {deny all;}}#第一个虚拟服务器server {#侦听192.168.8.x的80端口listen       80;server_name  192.168.8.x;#对aspx后缀的进行负载均衡请求location ~ .*\.aspx$ {root   /root;#定义服务器的默认网站根目录位置index index.php index.html index.htm;#定义首页索引文件的名称proxy_pass  http://mysvr;#请求转向mysvr 定义的服务器列表#以下是一些反向代理的配置可删除.proxy_redirect off;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IPproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 10m;    #允许客户端请求的最大单文件字节数client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,proxy_connect_timeout 90;  #nginx跟后端服务器连接超时时间(代理连接超时)proxy_send_timeout 90;        #后端服务器数据回传时间(代理发送超时)proxy_read_timeout 90;         #连接成功后,后端服务器响应时间(代理接收超时)proxy_buffer_size 4k;             #设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers 4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 64k;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传}}
}

配置 WebSocket

Nginx 的配置文件在其安装路径下的 conf 和 conf.d 中,不过不建议在 conf/nginx.conf 中修改,如要修改,也可以 http{} 中添加配置。

建议在 conf.d/ 文件夹下新建一个配置文件,这里为 wss 的 websocket.conf 配置文件说明:

server {listen 443;server_name test.com ssl;# 自己的证书,放在与ssl.conf同一文件夹下。(若放不同文件夹注意路径问题)ssl_certificate test.com.crt;ssl_certificate_key test.com.key;ssl_session_timeout 5m;ssl_session_cache shared:SSL:10m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";ssl_prefer_server_ciphers on;ssl_verify_client off;location /ws {        proxy_redirect off;proxy_pass http:/127.0.0.1:8080;      # 转发proxy_set_header Host $host;proxy_set_header X-Real_IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr:$remote_port;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;   # 升级协议头 websocketproxy_set_header Connection upgrade;}
}

配置完成后执行检查配置,如下:

$ nginx -t

如果配置没问题,就可以启动了。

相关文章:

  • 【数据分享】1929-2023年全球站点的逐年降雪深度数据(Shp\Excel\免费获取)
  • SQL布尔盲注、延迟注入和堆叠注入
  • Python 数据分析(PYDA)第三版(一)
  • 一、OpenAI API介绍
  • 多路服务器技术如何处理大量并发请求?
  • 探索C语言中的联合体与枚举:数据多面手的完美组合!
  • 哪种安全数据交换系统,可以满足信创环境要求?
  • 1897_野火FreeRTOS教程阅读笔记_链表
  • Mac 安装 Homebrew
  • [蓝桥杯 2022 省 A] 选数异或 题解 含源码
  • Ubuntu 命令与脚本
  • Msql-数据库死锁
  • RabbitMQ详解
  • jsp课程管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 机器学习的整个流程
  • (三)从jvm层面了解线程的启动和停止
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java反射-动态类加载和重新加载
  • Python_网络编程
  • V4L2视频输入框架概述
  • 闭包,sync使用细节
  • 从零搭建Koa2 Server
  • 区块链技术特点之去中心化特性
  • 人脸识别最新开发经验demo
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 通过git安装npm私有模块
  • 消息队列系列二(IOT中消息队列的应用)
  • 赢得Docker挑战最佳实践
  • 正则表达式小结
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #pragma 指令
  • #考研#计算机文化知识1(局域网及网络互联)
  • (12)Hive调优——count distinct去重优化
  • (2)MFC+openGL单文档框架glFrame
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二)hibernate配置管理
  • (转)Linux下编译安装log4cxx
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET CLR Hosting 简介
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net 反编译_.net反编译的相关问题
  • .NET 反射的使用
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/C# 的字符串暂存池
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .Net程序帮助文档制作
  • .NET构架之我见
  • .NET基础篇——反射的奥妙
  • .net专家(高海东的专栏)
  • /boot 内存空间不够
  • /etc/shadow字段详解
  • /etc/skel 目录作用
  • @Autowired和@Resource装配