【问题标题】:deploying WT web app on google cloud在谷歌云上部署 WT Web 应用
【发布时间】:2017-05-14 20:38:09
【问题描述】:

我已经构建了一个 wt (witty) hello world 示例,我正在尝试将它部署在 Google Cloud 实例上。它似乎在本地运行良好(因此它具有所有必要的库依赖项)。但是,我无法将它部署在服务器上。

我正在尝试(使用与以下示例不同的实际 http 地址)

./hello --docroot . --http-address 105.150.47.754 --http-port 80

但它会响应

Error (asio): bind : cannot assign requested address

使用 (0.0.0.0/0) 似乎可以正常工作

云实例允许 HTTP tcp/80 流量。

我试过了

setcap 'cap_net_bind_service=+ep' ~/hello

允许非root用户在1024以下的端口上发布,但也无济于事。

有什么建议吗?

干杯,迈克

【问题讨论】:

    标签: web google-compute-engine wt


    【解决方案1】:

    如果您无法侦听指定的 IP 地址,则可能是以下情况之一:

    1) 某些东西(例如网络服务器)已经在端口 80 上侦听该地址,或者

    2) 您使用的 IP 地址未分配给机器的网络接口之一。

    使用 (0.0.0.0/0) 和端口 80 告诉 Wt Web 服务器 (wthttpd) 侦听所有可用的本地接口。因此,使用该地址将适用于分配了任何 IP 地址且端口 80 可用的任何可用网络接口。

    【讨论】:

    • /hello --docroot 。 --http-address 0.0.0.0 --http-port 80 解决方案有效,但似乎不安全。对风险有什么想法吗?
    • 其实 ./hello --docroot 。 --http-address 10.150.0.4 --http-port 80 也适用于 10.150.0.4 是内部 IP 的情况。这似乎更安全,但不确定这是生产质量。
    • 我不会太担心网络服务器监听所有网络接口。无论如何,将网络服务器放在互联网上将使每个人都可以访问它。但是,我认为使用 https 而不是 http 更重要。如今,使用 https 真的很容易,尤其是因为您可以使用 Let's Encrypt 证书,它只花费设置时间。较新版本的 wthttpd 连接到您的 Wt 应用程序并使用 openssl 通过所有安全检查。还可以使用防火墙来阻止不需要公开访问的端口。
    • 如果您有多个接口并且只想将其中一个用于您的 web 应用程序,则将 Wt 应用程序限制为仅侦听一个接口会很有用。出于安全目的,我不确定通过限制侦听接口您会获得多少,除非您设置了某种特定的基础设施,其中一个接口比其他接口更安全。此外,如果您更改了 IP 地址,则必须记住更改 http-address 参数以匹配它。
    • 为澄清干杯!
    猜你喜欢
    • 2016-10-29
    • 2019-04-12
    • 2020-09-06
    • 2018-10-05
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多