美文网首页
Vapor文档学习卅三: HTTP -Server

Vapor文档学习卅三: HTTP -Server

作者: Supremodeamor | 来源:发表于2017-04-25 08:45 被阅读48次

    服务器负责接受来自客户端的连接,解析他们的请求,并向他们发送响应。

    Default

    Droplet会运行一个默认的服务器。

    import Vapor
    
    let drop = Droplet()
    
    drop.run()
    

    这个默认的服务器 host:0.0.0.0 ,端口号:8080

    Config

    你可以通过Config/servers.json文件轻松更改主机、端口号甚至开启多个服务器。

    {
        "default": {
            "port": "$PORT:8080",
            "host": "0.0.0.0",
            "securityLayer": "none"
        }
    }
    

    上面就是默认的servers.json。端口号环境变量设置为$PORT,若$PORT不存在,则回退为8080

    Multiple

    你可以在一个应用中开启多个服务器,尤其在你需要同时开启HTTPHTTPS服务器时这很有用。

    {
        "plaintext": {
            "port": "80",
            "host": "vapor.codes",
            "securityLayer": "none"
        },
        "secure": {
            "port": "443",
            "host": "vapor.codes",
            "securityLayer": "tls",
            "tls": {
                "certificates": "none",
                "signature": "selfSigned"
            }
        },
    }
    

    TLS

    TLS(以前称为SSL)可以配置各种不同的证书和签名类型。

    Verify

    可以禁止验证证书或者主机。默认是需要验证的。

    Note:修改这些需要格外谨慎。

    "tls": {
       "verifyHost": false,
       "verifyCertificates": false
    }
    

    Certificates

    • None
    "tls": {
        "certificates": "none"
    }
    
    • Chain
    "tls": {
        "certificates": "chain",
        "chainFile": "/path/to/chainfile"
    }
    
    • Files
    "tls": {
        "certificates": "files",
        "certificateFile": "/path/to/cert.pem",
        "privateKeyFile": "/path/to/key.pem"
    }
    
    • Certificate Authority
    "tls": {
        "certificates": "ca"
    }
    

    Signature

    • Self Signed
    "tls": {
        "signature": "selfSigned"
    }
    
    • Signed File
    "tls": {
        "signature": "signedFile",
        "caCertificateFile": "/path/to/file"
    }
    
    • Signed Directory
    "tls": {
        "signature": "signedDirectory",
        "caCertificateDirectory": "/path/to/dir"
    }
    

    Example

    下面是一个使用证书文件进行自签名签名和主机验证的servers.json文件示例:

    {
        "secure": {
            "port": "8443",
            "host": "0.0.0.0",
            "securityLayer": "tls",
            "tls": {
                "verifyHost": true,
                "certificates": "files",
                "certificateFile": "/vapor/certs/cert.pem",
                "privateKeyFile": "/vapor/certs/key.pem",
                "signature": "selfSigned"
            }
        }
    }
    

    Manual

    可以不使用配置文件手动配置server。

    注意:如果服务器是通过程序配置的,它们将覆盖任何配置文件的设置。

    Simple

    Droplet的run方法携带了一个配置信息的字典对象,key就是server的名字。

    import Vapor
    
    let drop = Droplet()
    
    drop.run(servers: [
        "default": (host: "vapor.codes", port: 8080, securityLayer: .none)
    ]
    
    TLS

    TLS也可以手动配置,和上面在servers.json配置的描述一样。

    import Vapor
    import TLS
    
    let drop = Droplet()
    
    let config = try TLS.Config(
        mode: .server,
        certificates: .files(
            certificateFile: "/Users/tanner/Desktop/certs/cert.pem", 
            privateKeyFile: "/Users/tanner/Desktop/certs/key.pem", 
            signature: .selfSigned
        ),
        verifyHost: true,
        verifyCertificates: true
    )
    
    drop.run(servers: [
        "plaintext": ("vapor.codes", 8080, .none),
        "secure": ("vapor.codes", 8443, .tls(config)),
    ])
    

    相关文章

      网友评论

          本文标题:Vapor文档学习卅三: HTTP -Server

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