美文网首页
通过Https访问Parse Server和Parse Dash

通过Https访问Parse Server和Parse Dash

作者: 启发禅悟 | 来源:发表于2022-09-24 15:29 被阅读0次

    使用Docker在MacOS上部署Parse Server和Parse Server Dashboard这篇文章提到,我们的部署只能通过Http访问,而目前几乎所有的服务器访问都要求使用Https访问,所以本篇我们着重介绍如何通过Https访问Parse Server和Parse Dashboard

    先说结论和实现方案,最后再讨论一些其他的探索过程。

    结论:通过Nginx的反向代理来实现

    我们先来看Parse Server的Https访问

    参考使用Docker在MacOS上部署Nginx并配置Https,我们映射了Nginx的配置文件到本地,即工程目录下的./nginx/conf.d/default.conf,编辑该文件的https部分:

    server {
       listen  443 ssl;
       server_name  localhost; # 换成自己的host
    
       ssl_certificate  /etc/nginx/conf.crt/localhost.crt;             #指定证书位置(通过目录挂载到容器内部)
       ssl_certificate_key  /etc/nginx/conf.crt/localhost.key;         #指定私钥位置(通过目录挂载到容器内部)
    
       location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        location /parse/ {
            proxy_pass http://172.17.0.4:1337/parse/;
            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-NginX-Proxy true;
            proxy_redirect off;
        }
    }
    

    location /parse/部分是新增的,即所有https://localhost/parse/关联的访问都转向http://172.17.0.1:1337/parse/,请注意,这里我们不能再使用localhost了,我们必须使用parse-server docker容器的内部IP。

    如何获得parse docker的内部IP?

    docker ps
    docker inspect parse-server
    

    通过docker ps命令查看容器名字,然后通过docker inspect 查看该容器的详细内容,然后您就可以看到IPAddress的内容了。

    重启Nginx服务器

    此时我们使用https://localhost/parse进行测试

    curl -X POST \
    -H "X-Parse-Application-Id: APPLICATION_ID" \
    -H "Content-Type: application/json" \
    -d '{"score":1337,"playerName":"Sean Plott","cheatMode":false}' \
    https://localhost/parse/classes/GameScore
    

    返回结果类似,这样就是执行成功了。

    {
      "objectId":"Ixb4yaX8ZH",
      "createdAt":"2022-09-22T04:21:08.928Z"
    }
    
    parse-dashboard的Https访问

    同样parse-server,我们也通过修改nginx配置文件来配置反向代理,使parse-dashboard支持https的访问。

    # 增加https部分设置
    server {
       listen  443 ssl;
       server_name  localhost; # 换成自己的host
    
       ssl_certificate  /etc/nginx/conf.crt/localhost.crt;             #指定证书位置(通过目录挂载到容器内部)
       ssl_certificate_key  /etc/nginx/conf.crt/localhost.key;         #指定私钥位置(通过目录挂载到容器内部)
    
       location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        location /parse/ {
            proxy_pass http://172.17.0.4:1337/parse/;
            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-NginX-Proxy true;
            proxy_redirect off;
        }
    
        location /parse-dashboard/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://172.17.0.5:4040/parse-dashboard/;
            proxy_ssl_session_reuse off;
            proxy_set_header Host $http_host;
            proxy_redirect off;
        }
    }
    

    注意,这里的/parse-dashboard/是和我们之前在生成parse-dashboard docker时的--mountPath参数是一致的。反向代理指向的地址为parse-dashboard docker的http地址。

    此外,我们需要额外修改的是parse-dashboard docker的配置文件,即./parse-dashboard/config/parse-dashboard-config.json

    {
        "apps": [
            { 
                "serverURL": "https://localhost/parse",
                "appId": "APPLICATION_ID",
                "masterKey": "MASTER_KEY",
                "appName": "Hello World",
                "mountPath": "parse-dashboard"
            }
        ],
        "users": [
            {
                "user":"parse",
                "pass":"password"
            }
        ]
    }
    

    "serverURL"由原先的http://localhost:1337/parse修改为https://localhost/parse

    此时我们访问https://localhost/parse-dashboard/就可以正确的访问了

    额外的讨论

    除了反向代理,我们也可以通过创建基于https进行访问的parse-server和parse-dashboard。

    parse-dashboard的docker提供了https的支持,我们可以通过指定--sslKey和--sslCert提供https访问的钥匙和证书,来实现,例如:

    cd $HOME/parse.server.docker
    docker run \
    --name parse-dashboard \
    -p 4040:4040 \
    -v $(pwd)/parse-dashboard/config/parse-dashboard-config.json:/src/Parse-Dashboard/parse-dashboard-config.json \
    -v $(pwd)/parse-dashboard/crt:/src/Parse-Dashboard/crt \
    -d parseplatform/parse-dashboard:4.1.4 \
    --sslKey /src/Parse-Dashboard/crt/localhost.key \
    --sslCert /src/Parse-Dashboard/crt/localhost.crt \
    --mountPath /parse-dashboard
    

    这是基于parse-dashboard docker内部的代码实现的,在提供--sslKey和--sslCert参数的情况下,创建了一个https的服务,来启动parse-dashboard。

    然而,parse-server的docker目前没有支持创建https的服务,因此不能像parse-dashboard那样。如果我们需要,那么就只能通过修改parse-server docker的代码来实现,这相对来说会稍微复杂一些,单独再开篇来细说吧。

    相关文章

      网友评论

          本文标题:通过Https访问Parse Server和Parse Dash

          本文链接:https://www.haomeiwen.com/subject/vxmanrtx.html