nginx配置websocket或https的转发教程

这篇具有很好参考价值的文章主要介绍了nginx配置websocket或https的转发教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、把普通的IP访问改为自己的域名,例如我们希望的域名是mywebsocket.test.com,那么前端页面配置的地址如下

// ws协议,注意,域名后面的/webSocket自己随意起,但是要和后台保持一直,别访问不到了
ws://mywebsocket.test.com/webSocket

// wss协议,需要SSL证书,也就是你的域名必须要支持HTTPS
wss://app116386.eapps.dingtalkcloud.com/webSocket

2、页面的DEMO如下,比较简单

var wesocketServer = "wss://mywebsocket.test.com/webSocket";
var myWebSocket = new WebSocket(wesocketServer);
myWebSocket.onopen = function () {
    var loginMessage = {
        authorization: publicWechatToken,
        event: "AUTHORIZATION",
        source: "WE_CHAT"
    };
    myWebSocket.send(JSON.stringify(loginMessage));
    myWebSocketInterval = setInterval(function(){
        var heartMessage = {
            authorization: publicWechatToken,
            event: "ROBOT_HEARTBEAT",
            source: "WE_CHAT"
        };
        myWebSocket.send(JSON.stringify(heartMessage));
    },30*1000);
}
myWebSocket.onmessage = function (e) {
    var data = JSON.parse(e.data);
    console.log(data);
}
myWebSocket.onclose = function () {
    clearInterval(myWebSocketInterval);
}

3、nginx的配置如下



#user  nobody;
worker_processes  1;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    # 文件大小限制,默认1m
    client_max_body_size     50m;
    client_header_timeout    1m;
    client_body_timeout      1m;
    proxy_connect_timeout    60s;
    proxy_read_timeout      1m;
    proxy_send_timeout      1m;
    # websocket需要增加该配置
    map $http_upgrade $connection_upgrade {
      default keep-alive;
      'websocket' upgrade;
  }

    #gzip  on;


    upstream abc_test_websocket_name{
        server 172.168.1.3:9041;
    }
    upstream abc_prod_server_name{
        server 172.168.1.4:8940;
    }
    upstream abc_test_server_name{
        server 172.168.1.5:8990;
    }
    server {
        #监听443端口
        listen 443 ssl;
        #你的域名
        server_name dingtalktest.abc.com;
        #ssl证书的pem文件路径
        ssl_certificate  /enterprise_wx/ssl/6434864__abc.com.pem;
        #ssl证书的key文件路径
        ssl_certificate_key /enterprise_wx/ssl/6434864__abc.com.key;

        location /myProject/ {
            # enterprise wechat test
            add_header X-Content-Type-Options nosniff;
            proxy_set_header X-scheme $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # 注意必须设置 Host,否则使用 Java Client 无法正常访问 MinIO
            proxy_set_header Host $http_host;
            proxy_set_header X-Nginx-Proxy true;
            proxy_hide_header X-Powered-By;
            proxy_hide_header Vary;
            client_max_body_size 2048m; 
            proxy_pass http://abc_test_server_name;
            # 重复提交情况
            proxy_next_upstream off;
            proxy_read_timeout 600;
			proxy_send_timeout 600;
            proxy_connect_timeout 600;
        }
   
        location /user/ {
            # 这里的8181是自己的nacos
            proxy_pass http://172.168.1.1:8181/user/;
        }
        location /auth/ {
            proxy_pass http://172.168.1.1:8181/auth/;
        }
        location /role/ {
            proxy_pass http://172.168.1.1:8181/role/;
        }
        location / {
            index index.html index.htm;
            root /var/www/myShop/h5;
            # 下面这句话可以解决vue打包部署后,页面刷新报404的问题
            try_files $uri $uri/ /index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        error_page 404 /index.html;
        location = /index.html {
        	root /var/www/myShop/h5;
        }
    }
    server {
        listen 80;
        server_name abc.com;
        
        location / {
            index index.html index.htm;
            root /var/www/myShop/h5;
            # 下面这句话可以解决vue打包部署后,页面刷新报404的问题
            try_files $uri $uri/ /index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        error_page 404 /index.html;
        location = /index.html {
        	root /var/www/myShop/h5;
        }
        location /myProject/ {
            # enterprise wechat test
            add_header X-Content-Type-Options nosniff;
            proxy_set_header X-scheme $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # 注意必须设置 Host,否则使用 Java Client 无法正常访问 MinIO
            proxy_set_header Host $http_host;
            proxy_set_header X-Nginx-Proxy true;
            proxy_hide_header X-Powered-By;
            proxy_hide_header Vary;
            client_max_body_size 2048m; 
            proxy_pass http://abc_prod_server_name;
            # 重复提交情况
            proxy_next_upstream off;
            proxy_read_timeout 600;
			proxy_send_timeout 600;
            proxy_connect_timeout 600;
        }

        location /user/ {
            # 这里的8181是自己的nacos
            proxy_pass http://172.168.1.1:8181/user/;
        }
        location /auth/ {
            proxy_pass http://172.168.1.1:8181/auth/;
        }
        location /role/ {
            proxy_pass http://172.168.1.1:8181/role/;
        }

        # 重点在这里,webSocket后面没有斜杠,和其它项目的区别
        location /webSocket {
            proxy_pass http://abc_test_websocket_name;
            proxy_read_timeout 300s;
            proxy_send_timeout 300s;
            proxy_redirect off;
            proxy_set_header Host $host:5052;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #升级http1.1到 websocket协议
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection  $connection_upgrade;
        }
   
    }

    server {
        listen       80;
        # 自己需要监听的域名
        server_name abc.com;
        #将请求转成https
        rewrite ^(.*)$ https://$host$1 permanent;
        
    }


}

4、nginx命令,每次nginx.conf修改后,需要重新reload文章来源地址https://www.toymoban.com/news/detail-516424.html

#进入到nginx/conf文件夹,然后执行下面的命令
# cd /usr/local/nginx/conf

# 退出
nginx -s quit

# 重新启动
nginx -s reload

# 启动
nginx

# 停止
nginx -s stop

到了这里,关于nginx配置websocket或https的转发教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx转发https:SSL_do_handshake() failed

    大概情况:前端项目是vue,部署到nginx,由于项目中使用了第三方接口,直接访问会存在跨域问题,所以使用nginx进行转发,但是请求的时候报错了。 错误日志 SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking t

    2024年02月01日
    浏览(53)
  • nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)

    最近在阿里云上入手了一台云服务器,准备搭建一套java程序,在 Nginx 配置SSL证书时,配上之后前端可以正常以https的方式打开,但是访问不到后端,自己也是明明知道是 Niginx 配置的问题,但就不知道错哪了,当时心里的那种感觉真是无法表达呜呜呜… 经过排查发现 前端访

    2024年02月11日
    浏览(50)
  • Tomcat配置https,JAVA生成ssl证书,http和https双向配置

    1、java生成ssl证书 首先要确认环境是否安装JDK;必须安装JDK才能生成SSL证书 1.1、服务器生成证书 服务器生成证书: 使用keytool为Tomcat生成证书,假定目标机器的域名是“127.0.0.1”,keystore文件存放在“D:omcat.keystore”,口令为“123456”,validity为证书有效时间当前为90天  生成命

    2024年02月01日
    浏览(39)
  • nginx 如何将 https 请求转发到 http

    网站之前是 https 的,通过 nginx 设置好了,现在不想用 https 了,但发散到外界的一些网址还是 https 的,此时只能通过 nginx 去转发 https 请求到 http 才能实现之前的链接能正常访问。 具体设置如下: https 的其它设置不需要动,只需要在 server 字段添加一条:

    2024年02月11日
    浏览(59)
  • SpringBoot + Vue2项目打包部署到服务器后,使用Nginx配置SSL证书,配置访问HTTP协议转HTTPS协议

    配置nginx.conf文件,这个文件一般在/etc/nginx/...中,由于每个人的体质不一样,也有可能在别的路径里,自己找找... 证书存放位置,可自定义存放位置 两个文件 后端配置 把.pfx拷贝到resource下,然后配置一下yml

    2024年02月02日
    浏览(75)
  • Nginx接收Http协议请求转发使用Https协议

    公司使用阿里的apigateway,规定不太友好,同是SIT环境,A系统的SIT1环境居然不能调用B系统的SIT2环境的接口。因为各个系统之间部署的SIT环境数量不同A系统可能只有1套,B系统可能有8套,这样的话,可能会随时切换调用B系统的环境,管理员不允许,于是想着用Nginx做下转发。

    2024年02月08日
    浏览(65)
  • Nginx转发http到https和开机自动启动

    场景: 以下都是基于windows系统(ip为虚构) 1.ip:172.16.54.55需要访问172.16.54.57的接口服务,来查看机械臂的运行状况 2.存在网络隔离,172.16.54.55无法直接访问172.16.54.57 3.172.16.54.56与172.16.54.57是机械臂厂商搞得内部网络,彼此可以互通 4.172.16.54.55与172.16.54.56是外部网络,彼此可以

    2023年04月25日
    浏览(46)
  • tengine/nginx https请求 转发 http upstream

    当前的互联网应用基本都要支持https协议,而当浏览器头通过https协议将请求发到到负责负载的nginx后,会由当前nginx再以http协议向后端upstream进行请求,之所以这么做是因为https协议的安全性也带来的额外的性能消耗。而源端基本都是在一个内网里面的,对于通讯协议的安全性

    2024年01月23日
    浏览(46)
  • nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头

    今天在排查服务器的问题时最后定位到服务器因为经过了运维这一层的处理,转发过来的请求不管用户请求的是https还是http,我们的proxy服务器收到的都是80端口上的http。于是联系相关部门了解有没有现成的可用的这样一个字段来获得这个值。公司用的也是标准报头,即X-Fo

    2024年02月16日
    浏览(58)
  • 解决:VUE nginx 部署 SSL https访问 WebSocket 问题

    报错1.  Failed to construct \\\'WebSocket\\\': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 报错2. 说明: http 是 ws:`ws://192.168.110.33:8080/websocket/${this.$store.state.user.name}` https 是 wss: `wss://alarm.shijiguorui.com:443/websocket/${this.$store.state.user.name}` 1. 服务nginx代理使用http 访问 W

    2024年01月23日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包