Creator+微信小游戏:(4)服务器Https、SSL、Nginx配置

前面说过,要想发布小游戏,你必须有个https服务器。
这一步总归是要迈过去的。
现在我们来解决这里面的一些的问题。

准备工作

1、云服务器。我用的阿里云。以下以阿里系解决方案为例。
2、域名。几十块钱一年。
3、ssl证书。这个有免费的。
4、https域名备案。这个需要好几天的时间。

https与nginx配置

1、我这里以Ubuntu16为例。不同的系统目录会有区别。
2、安装Nginx:pip install nginx
3、安装证书。key文件和pem文件放入新建的/etc/nginx/cert文件夹中。
4、在目录/etc/nginx/sites-available中修改配置文件:

# Default server configuration
#
# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
    listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
    server_name www.lsldd.vip;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
    root /var/www/html;
    index index.html index.htm;
    ssl_certificate     cert/***.pem;   #您证书的文件名。
    ssl_certificate_key cert/***.key;   #您证书的密钥文件名。
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
    ssl_prefer_server_ciphers on;   
    location / {
        root /var/www/html;
        index index.html index.htm;   
    }
    location ^~/socket.io {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://127.0.0.1:8888;
    }
    
    location ^~/res {
        index index.html index.htm;   
        autoindex on;    #开启索引功能
        autoindex_exact_size off;  #关闭计算文件确切大小,只显示大概大小(kb、mb、gb)
        autoindex_localtime on;   #显示本机时间而非 GMT 时间
    }
}   

注意这个配置文件应该在sites-enabled目录中有快捷方式相链接。
这个配置文件里最重要的是这几个地方:
1、 listen 443 ssl; 这里开启了https。
2、ssl_certificate、ssl_certificate_key :证书的路径配置。
3、location 配置。
location ^~/socket.io配置的是socketio。
你已经发现了,小游戏用socketio连接服务器,会报如下错误:在这里插入图片描述
所以,我们这里配置了转发,凡是socket.io请求都转发到http://127.0.0.1:8888,其中ip地址是我们游戏服务器的ip,8888是我们的游戏端口。
location ^~/res配置的是文件服务器。我们提到小游戏需要远程下载文件,因此必须把存放res的目录配置为可以下载。
注意:这一步配置不好,会报ERR_SSL_PROTOCOL_ERROR错误。

creator测试

现在服务器开启端口号8888,客户端使用creator连接。
1、客户端测试。代码如下:

defines.serverUrl = "wss://XXXX.com"
var opts = {
            'reconnection': true,
            'force new connection': false,
            'transports': ['websocket'],
            'secure': true,
        }
_socket = window.io.connect(defines.serverUrl, opts);

看到这里你很奇怪,服务器地址的端口号不是8888吗?connect不用写端口号?
注意这里有个天坑!不用写端口号!
原因是wss连接使用默认端口号,nginx才会正确的转发到http://127.0.0.1:8888!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值