轻松实现Nginx的HTTP与WebSocket转发:你的网站需要这个
创作时间:
作者:
@小白创作中心
轻松实现Nginx的HTTP与WebSocket转发:你的网站需要这个
引用
CSDN
1.
https://blog.csdn.net/t610654893/article/details/136804418
对于初学者来说,配置Nginx可能有一定的难度。幸运的是,我们可以使用一个自动配置Nginx的网站来辅助我们:
https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCN
该网站提供了傻瓜式的点击配置功能,配置完成后可以下载一个非常详尽的Nginx配置文件。
在Nginx中配置HTTP和WebSocket转发时,需要关注以下两点:
- SSL:证书配置,取决于是否使用HTTP还是HTTPS,以确保数据在客户端和服务器之间传输时的安全性。
- SERVER:server块是一个配置指令块,允许定义如何处理来自特定域名的请求。可以有多个server块,每个server块通常对应一个唯一的域名或IP地址加端口组合。
在SERVER块中配置HTTP和WebSocket:
- HTTP转发配置:对于HTTP请求,可以使用proxy_pass指令将请求转发到应用服务器。
server {
listen 80;
server_name example.com; # 你的域名
location / {
proxy_pass http://backend; # backend是应用服务器的upstream名称
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
在上面的配置中,backend是一个upstream指令定义的服务器组,需要确保在Nginx配置文件中定义了这个upstream。
- WebSocket转发配置:对于WebSocket请求,除了使用proxy_pass指令外,还需要添加一些额外的配置来支持WebSocket通信。
server {
listen 80;
server_name example.com; # 你的域名
location /ws/ {
proxy_pass http://websocket_backend; # websocket_backend是WebSocket服务器的upstream名称
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
类似于HTTP转发,websocket_backend应该是一个upstream指令定义的服务器组。上面的配置中,proxy_http_version 1.1指定了使用HTTP/1.1,而proxy_set_header Upgrade $http_upgrade和proxy_set_header Connection "upgrade"是WebSocket协议升级所需的标头。
接下来,我们来看一个具体的配置实例:
# 匹配 /api/exchange/**
location ~/exchange/ {
proxy_pass http://ip地址:5252;
}
# 匹配 /api/manager/**
location ~/manager/ {
proxy_pass http://ip地址:5253;
}
# 匹配 swagger
location ~/doc.html {
proxy_pass http://ip地址;
}
# 匹配 swagger
location ~/*.css {
proxy_pass http://ip地址;
}
# 匹配 swagger
location ~/*.js {
proxy_pass http://ip地址;
}
# 匹配 swagger
location ~/swagger-resources {
proxy_pass http://ip地址;
}
# 匹配 /ws/**
location ^~ /ws {
# 后台准备的websocket地址端口
proxy_pass http://ip地址:5353;
# 其他参数都一样
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
了解Nginx中正则匹配的规则和优先级:
- location = # 精准匹配
- location ^~ # 带参前缀匹配
- location ~ # 正则匹配(区分大小写)
- location ~* # 正则匹配(不区分大小写)
- location /a # 普通前缀匹配,优先级低于带参数前缀匹配。
- location / # 任何没有匹配成功的,都会匹配这里处理
如果配置全部正确但仍然无法转发WebSocket,可能是由于API配置或正则匹配优先级问题。请检查API配置和正则匹配优先级。
最后,完成配置后不要忘记重启Nginx服务以使配置生效:
sudo systemctl restart nginx
# 或者
nginx -s reload
确保应用服务器能够处理WebSocket连接,并且防火墙设置允许相应的端口通信。如果WebSocket服务运行在不同的端口或使用HTTPS,还需要相应地修改Nginx配置。
热门推荐
辛芩颗粒和玉屏风散哪个效果好
成人感冒适合喝什么粥
被骗后怎么收集证据
家用充电桩申请流程,让你无忧!
初探《易经》:掌握基础知识,开启智慧之门
团队取名指南:打造既专业又有趣的团队名称
罗马和汉朝一较高下:接受事实,罗马在文化方面已经领先了汉朝
中越战争,解放军28天就可直攻河内,为何老兵回忆时刻四面受敌?
导航卫星定位:从全球米级到全球厘米级
合同工与编制人员的区别待遇及其法律影响分析
快速建立工作关系的技巧
如何优化网络的QoS设置
湘雅附一附二附三医院哪个好?建议从这3个区别对比选择
公司当天直接辞退员工违法吗?怎么处理?
如何理解金融市场的变化?这种金融市场的变化对投资者有哪些启示?
家用4盘位NAS如何配置RAID
GPa单位换算等于多少Pa(1GPa等于多少帕)
红茶的健康益处:你需要知道的七件事
装修工程中透气防水材料要如何进行选择
晚上跑步能不能减肥?
胎心140左右要警惕了
什么是看板?一文详细介绍看板概念、作用、应用、功能
股东可以回购股权吗
环保行业业绩前瞻:启迪环境、东江环保、博世科预亏超过5亿元
海啸自救全攻略:从预警到灾后互助
汽车业如何下好兼并重组这盘棋
国家名片!76年人民币发展历程,从五万元到智能防伪
各地特色民居建筑之特征
4年产量第一仍亏了4000亿!南北水果差异大?黑心商家赚取3倍差价
心血管造影的造影剂有哪些