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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/670157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VOL_偷懒记录!!

目录 前端1.记录 js如何获取当前时间(YY-MM-DD hh:mm:ss)2.记录 http请求3.记录(常用) 后端1.记录 前端 1.记录 js如何获取当前时间(YY-MM-DD hh:mm:ss) getCurrentTime() {const now new Date();return ${now.getFullYear()}-${(now.getMonth() 1).toString().padStart(2,…

java面试题:MySQL中的各种JOIN的区别

表关联是频率非常高的一种数据库操作,在MySQL中,这种JOIN操作有很多类型,包括内联接、左外连接、右外连接等等,而每种连接的含义都不一样,如果死记硬背,不仅很难记住,而且也容易搞混淆&#xff…

pytorch 利用Tensorboar记录训练过程loss变化

文章目录 1. LossHistory日志类定义2. LossHistory类的使用2.1 实例化LossHistory2.2 记录每个epoch的loss2.3 训练结束close掉SummaryWriter 3. 利用Tensorboard 可视化3.1 显示可视化效果 参考 利用Tensorboard记录训练过程中每个epoch的训练loss以及验证loss,便于…

前端工程化之:webpack3-5(css module)

目录 一、css module 1.思路 2.实现原理 3.如何应用样式 4.其他操作 (1)全局类名 (2)如何控制最终的类名 5.其他注意事项 一、css module 通过命名规范来限制类名太过死板,而 css in js 虽然足够灵活&…

Qt应用软件【协议篇】TCP示例

文章目录 TCP协议简介Qt中的TCP编程完整代码示例实际使用中的技巧实际使用中的注意事项TCP协议简介 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。与UDP不同,TCP提供了数据包排序、重传机制、流量控制和拥塞控制,确保了数据传输的可靠性和顺序…

京东首页移动端-web实战

设置视口标签以及引入初始化样式 <link rel"stylesheet" href"./css/normalize.css"><link rel"stylesheet" href"./css/index.css"> body常用初始化样式 body {width: 100%;min-width: 320px;max-width: 640px;margin:…

作业2.5

第四章 堆与拷贝构造函数 一 、程序阅读题 1、给出下面程序输出结果。 #include <iostream.h> class example {int a; public: example(int b5){ab;} void print(){aa1;cout <<a<<"";} void print()const {cout<<a<<endl;} …

mysql 多数据源

依赖 <dependencies><!--mysql连接--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--多数据源--><dependency><g…

PostgreSQL开启wal日志归档模式

1.检查归档模式是否开启 postgres# show archive_mode;archive_mode --------------off (1 row)2.开启归档模式 ## 创建归档目录 mkdir -p /pgsql15.4/pg_arch## 配置归档相关参数 postgres# alter system set archive_modeon; ALTER SYSTEM postgres# alter system set arc…

P9240 [蓝桥杯 2023 省 B] 冶炼金属--2024蓝桥杯冲刺省一

点击跳转例题 思路&#xff1a;最开始读完题&#xff0c;我们知道求最小值最大&#xff0c;和最大值最小。是符合二分的性质的&#xff0c;但是我们再一思考可以发现这是简单的数学。 求每条记录的最小值&#xff1a;a/&#xff08;b1&#xff09;1。可以发现 a%b的情况下&…

【手写数据库toadb】虚拟文件描述符,连接表对象与物理文件的纽带,通过逻辑表找到物理文件的密码

22 存储管理抽象接口层 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,…

VLM 系列——Llava1.6——论文解读

一、概述 1、是什么 Llava1.6 是llava1.5 的升级暂时还没有论文等&#xff0c;是一个多模态视觉-文本大语言模型&#xff0c;可以完成&#xff1a;图像描述、视觉问答、根据图片写代码&#xff08;HTML、JS、CSS&#xff09;&#xff0c;潜在可以完成单个目标的视觉定位、名画…

【go】gorm\xorm\ent事务处理

文章目录 1 gorm1.1 开启事务1.2 执行操作1.3 提交或回滚 2 xorm2.1 开启事务2.2 执行操作2.3 提交或回滚 3 ent3.1 开启事务3.2 执行操作3.3 提交或回滚 前言&#xff1a;本文介绍golang三种orm框架对数据库事务的操作 1 gorm Begin开启事务 tx *gorm.DB 1.1 开启事务 tx :…

Qt PCL学习(一):环境搭建

参考 (QT配置pcl)PCL1.12.1QT5.15.2vs2019cmake3.22.4vtk9.1.0visual studio2019Qt5.15.2PCL1.12.1vtk9.1.0cmake3.22.2 本博客用到的所有资源 版本一览&#xff1a;Visual Studio 2019 Qt 5.15.2 PCL 1.12.1 VTK 9.1.0https://pan.baidu.com/s/1xW7xCdR5QzgS1_d1NeIZpQ?pw…

计算机设计大赛 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…

React+Antd+实现省、市区级联下拉多选组件

1、效果 是你要的效果&#xff0c;咱们继续往下看&#xff0c;搜索面板实现省市区下拉&#xff0c;原本有antd的Cascader组件&#xff0c;但是级联组件必须选到子节点&#xff0c;不能只选省&#xff0c;满足不了页面的需求 2、环境准备 1、react18 2、antd 4 3、功能实现 …

C++泛型编程:类模板(下)

类模板与继承&#xff1a; 需要指定模板参数的类型 template <class T> class Base { public:T m; }; class Son :public Base<int> { }; template <typename T1,typename T2> class Son2 :public Base<T2> { public:Son2(){cout << "T1的…

IntelliScraper 更新 --可自定义最大输出和相似度 支持Html的内容相似度匹配

场景 之前我们在使用IntelliScraper 初代版本的时候&#xff0c;不少人和我反馈一个问题&#xff0c;那就是最大输出结果只有50个&#xff0c;而且还带有html内容&#xff0c;不支持自动化&#xff0c;我声明一下&#xff0c;自动化目前不会支持&#xff0c;以后也不会支持&am…

按时间维度统计次数案例

按时间维度统计次数案例 文章目录 按时间维度统计次数案例1.按天维度统计个数2.按月维度统计个数3.按小时维度统计个数4.按分钟维度统计个数5.按秒维度统计个数6.每个5分钟的维度统计个数 1.按天维度统计个数 要按天维度统计某个字段的个数&#xff0c;可以使用MySQL的日期函数…

Java集合为什么不能使用foreach删除元素

文章目录 前言foreach为什么不能使用foreach操作ArrayList迭代器解析 前言 相信各位程序猿在开发的过程中都用过foreach循环&#xff0c;简单快捷的遍历集合或者数组&#xff0c;但是在通过foreach进行集合操作的时候就不可以了&#xff0c;这是为什么&#xff1f;这里先把问题…