首页 > 系统相关 >发布blazor应用到Linux, 使用nginx作为WebSocket代理

发布blazor应用到Linux, 使用nginx作为WebSocket代理

时间:2025-01-04 09:22:35浏览次数:1  
标签:set HTTP header nginx proxy Linux WebSocket

Blazor 使用了SignalR连接, 而SignalR使用的是WebSocket

WebSocket协议提供了一种创建支持客户端和服务器之间实时双向通信的 Web 应用程序的方法。作为 HTML5 的一部分,WebSocket 使开发此类应用程序比以前的方法容易得多。大多数现代浏览器都支持 WebSocket,包括 Chrome、Firefox、Internet Explorer、Opera 和 Safari,而且现在越来越多的服务器应用程序框架也支持 WebSocket。

对于企业生产用途,需要多个 WebSocket 服务器来实现性能和高可用性,因此需要一个能够理解 WebSocket 协议的负载平衡层,nginx自 1.3 版起就支持 WebSocket,可以充当反向代理并对 WebSocket 应用程序进行负载平衡。(nginx plus 的所有版本也都支持 WebSocket。)

查看有关 NGINX 可扩展性的最新性能测试,以平衡 WebSocket 连接的负载。

WebSocket 协议与 HTTP 协议不同,但 WebSocket 握手与 HTTP 兼容,可使用 HTTP 升级功能将连接从 HTTP 升级到 WebSocket。这使得 WebSocket 应用程序能够更轻松地融入现有基础设施。例如,WebSocket 应用程序可以使用标准 HTTP 端口 80 和 443,从而允许使用现有的防火墙规则。

WebSocket 应用程序在客户端和服务器之间保持长期连接,从而促进实时应用程序的开发。用于将连接从 HTTP 升级到 WebSocket 的 HTTP 升级机制使用Upgrade和Connection标头。反向代理服务器在支持 WebSocket 方面面临一些挑战。一个挑战是 WebSocket 是一种逐跳协议,因此当代理服务器拦截来自客户端的升级请求时,它需要向后端服务器发送自己的升级请求,包括适当的标头。此外,由于 WebSocket 连接是长寿命的,而不是 HTTP 使用的典型短寿命连接,因此反向代理需要允许这些连接保持打开状态,而不是因为它们似乎处于空闲状态而关闭它们。

nginx通过允许在客户端和后端服务器之间建立隧道来支持 WebSocket。为了让nginx将升级请求从客户端发送到后端服务器,必须明确设置Upgrade和Connection标头,如以下示例所示:

location / {    
    proxy_pass http://localhost:5001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
}

一旦完成后,nginx会将其作为 WebSocket 连接处理。

以下是我宝塔配置部分

    # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    # {
    #     expires      30d;
    #     error_log /dev/null;
    #     access_log /dev/null;
    # }

    # location ~ .*\.(js|css)?$
    # {
    #     expires      12h;
    #     error_log /dev/null;
    #     access_log /dev/null;
    # } 
    
    #以下为ssr配置
    #上面的 location ~ .*\.(js|css)?$ 和 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 整段要注销    #add_header X-Frame-Options SAMEORIGIN;    
    #Redirects all traffic
    location / {
      proxy_pass http://localhost:5001;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    }

标签:set,HTTP,header,nginx,proxy,Linux,WebSocket
From: https://www.cnblogs.com/densen2014/p/18651432

相关文章

  • Linux Shell 脚本编程基础知识篇—awk的条件判断(3)
    ℹ️大家好,我是练小杰,今天周五了,又是一周过去了......
  • 【RK3588 Linux 5.x 内核编程】-内核SPI子系统
    内核SPI子系统文章目录内核SPI子系统1、SPI子系统2、内核中的SPI协议驱动程序2.1获取SPI控制器驱动程序2.2将从设备添加到SPI控制器2.3配置SPI2.4数据传输2.5删除设备3、驱动实现SPI是流行的串行通信协议之一。SPI(SerialPeripheral......
  • Linux实验报告10-作业管理
    目录一:实验目的二:实验内容(1)启动两个vim编辑器在后台执行,然后查看当前有哪些作业正在执行。(2)打开ls命令的帮助手册后,先暂停执行,再转出到前台重新执行,最后退出手册。 (3)利用at命令向系统所有用户在当前时间之后的3分钟广播“hello"信息。 (4)请定制如下一次性......
  • Linux实验报告14-Linux内存管理实验
    目录一:实验目的二:实验内容1、编辑模块的源代码mm_viraddr.c2、编译模块 3、编写测试程序mm_test.c 4、编译测试程序mm_test.c  5、在后台运行mm_test6、验证mm_viraddr模块一:实验目的(1)掌握内核空间、用户空间,虚拟地址空间的概念;(2)掌握linux内核中内存管理......
  • 一图总结linux最有用的21个命令
    图中总结了linux中最有用的21个命令,包括:ls\cp\mv\rm\mkdir\cd\pwd\grep\find\cat\echo\top\ps\wget\ssh\sudo\chmod\chown\gzip\tar\man\等共21个命令图中对它们的用途做了详细的说明,这些命令在日常工作中使用频率最高,掌握了它们,工作可以更高效!#linux##运维##devops##编......
  • Linux缓存管理:如何安全地清理系统缓存
    理解/proc/sys/vm/drop_caches在Linux系统中,/proc/sys/vm/drop_caches是一个用于手动清理系统缓存的内核接口。它可以有以下三个值:1:清理页面缓存2:清理dentries和inodes3:清理页面缓存、dentries和inodes默认情况下,这个值是0,表示系统没有执行任何手动缓存清理操作。为......
  • Linux 安装 node.js 16.14.0
    1.创建目录mkdir/usr/local/node2.进入该目录cd/usr/local/node3.下载安装包wgethttps://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz4.解压tar-xvfnode-v16.14.0-linux-x64.tar.xz5.重命名//mv原文件夹名称改变后文件夹的名称mvnode......
  • LInux查看版本号 --- 稳定版、测试版、修订次数
    1.简述稳定版:通常具有较为规则的版本号,例如Ubuntu的稳定版可能是18.04、20.04、22.04等,其中主版本号和次版本号变化相对不频繁,且遵循一定的发布周期。测试版:版本号可能会带有诸如“ beta”等字样,或者版本号的格式较为特殊,显示其处于开发测试阶段。例如,Fedora的测试版......
  • win 使用WSL2安装Linux Ubuntu子系统
    win使用WSL2安装LinuxUbuntu子系统仅适用于WINDOWS10和11,WSL不能保证较好的Linux兼容性。1.启用WSL功能确保你的Windows版本支持WSL2,并已启用WSL功能。在PowerShell中以管理员身份运行以下命令来启用WSL功能:PSC:\Users\xxx>dism.exe/online/enable-feature/featurenam......
  • win 使用WSL2安装Linux Ubuntu子系统
    win使用WSL2安装LinuxUbuntu子系统仅适用于WINDOWS10和11,WSL不能保证较好的Linux兼容性。1.启用WSL功能确保你的Windows版本支持WSL2,并已启用WSL功能。在PowerShell中以管理员身份运行以下命令来启用WSL功能:PSC:\Users\xxx>dism.exe/online/enable-feature/featurenam......