当前位置:首页 > 编程笔记 > 正文
已解决

【NGINX】同时支持ws请求和http请求

来自网友在路上 181881提问 提问时间:2023-11-09 21:44:26阅读次数: 81

最佳答案 问答题库818位专家为你答疑解惑

在网上找了好多资料,上去都不行,最后多方拼凑,实现ws请求和http请求同时支持,全部代码如下:


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  1000;server_names_hash_bucket_size 64;client_max_body_size       100m;#gzip  on;gzip on;                     #开启gzip压缩功能gzip_min_length 1k;          #设置允许压缩的页面最小字节数; 这里表示如果文件小于10个字节,就不用压缩,因为没有意义,本来就很小.gzip_buffers 4 16k;          #设置压缩缓冲区大小,此处设置为4个16K内存作为压缩结果流缓存gzip_http_version 1.1;       #压缩版本gzip_comp_level 1;           #设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快; 这里表示压缩级别,可以是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,所以一般折中为6gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;gzip_disable "MSIE [1-6]\.";       #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)gzip_vary on;    #选择支持vary header;改选项可以让前端的缓存服务器缓存经过gzip压缩的页面; 这个可以不写,表示在传送数据时,给客户端说明我使用了gzip压缩#自定义变量 $connection_upgrademap $http_upgrade $connection_upgrade { default          keep-alive;  #默认为keep-alive 可以支持 一般http请求'websocket'      upgrade;     #如果为websocket 则为 upgrade 可升级的。}server {listen       80;server_name  myserverUrl;#charset koi8-r;#access_log  logs/host.access.log  main;# security headersadd_header X-Frame-Options "SAMEORIGIN" always;add_header X-XSS-Protection "1; mode=block" always;add_header X-Content-Type-Options "nosniff" always;add_header Referrer-Policy "no-referrer-when-downgrade" always;add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;#后台服务配置,配置了这个location便可以通过http://域名/jeecg-boot/xxxx 访问location ^~ /anhuan-safe { proxy_pass  http://127.0.0.1:8082/anhuan-safe/;proxy_set_header   Host    $host;proxy_set_header   X-Real-IP   $remote_addr;proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}#解决Router(mode:history )模式下,刷新路由地址不能找到页面的问题location / {root anhuan;index index.html index.htm;if (!-e $request_filename) {rewrite ^(.*)s /index.html?s=s1 last;break;}}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

关键代码:http代码块中,增加map

	#自定义变量 $connection_upgrademap $http_upgrade $connection_upgrade { default          keep-alive;  #默认为keep-alive 可以支持 一般http请求'websocket'      upgrade;     #如果为websocket 则为 upgrade 可升级的。}

在sever代码块中,你定义好的路由下面,增加以下两句话

		proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【NGINX】同时支持ws请求和http请求":http://eshow365.cn/6-36563-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!