【问题标题】:Reserve proxy to an LXC container反向代理到 LXC 容器
【发布时间】:2021-03-09 20:23:39
【问题描述】:

我在 ubuntu 16.04 桌面上使用虚拟主机从 GitHub 部署项目。这个项目一旦建成,就会在 LXD 中部署容器,我可以在浏览器中访问这些容器。该 URL 类似于 https://container-private-ip:4000适用于 HTTPS 和端口 4000。在允许与网站的不安全连接后,此方法运行良好。

现在我希望在 VPS 上部署 GitHub 项目。我让反向代理在指南中工作,但对于我的用例,我似乎无法弄清楚。我可以做些什么不同的事情?

nmap screenshot

Link to the reverse proxy guide I used.

proxy 容器的代码:

server {

        server_name ca.domain.come;

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass http://futura-ca.lxd:4000; # container name

        }

        real_ip_header proxy_protocol;
        set_real_ip_from 127.0.0.1;

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/ca.katunka.me/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/ca.katunka.me/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = ca.domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80 proxy_protocol;
        listen [::]:80 proxy_protocol;

        server_name ca.domain.com;
    return 404; # managed by Certbot


}

谢谢!

【问题讨论】:

  • 截图中的“ping”命令有错字。您在末尾添加了一个端口号,但在“ping”的情况下,它已被解释为 IP 地址。是的,IP 和号码的处理方式相同。
  • 我不知道!我现在在链接中搜索并使用了 nmap,非常感谢!

标签: ubuntu reverse-proxy lxc


【解决方案1】:

在容器中,您可以使用proxy.lxdfutura-ca.lxd 等域名。 futura-ca.lxd 上的网站可以是端口 80 上的普通网站,并且该特定网站上没有 HTTPS。原因是代理容器充当 TLS 终止代理,这意味着从访问者的浏览器到(包括)容器中的代理服务器处理 HTTPS。

如果端口 4000 是特定 Web 应用程序的默认端口,那么您仍然可以使用该端口。但如果不是,那么坚持使用 80 端口会更简单。

您使用 TLS 终止代理(proxy 容器)运行 certbot,它会为您获取 Let's Encrypt 证书。并安装它。

【讨论】:

  • 所以 certbot 正在正常工作。每当我访问 ca.domain.com 时,它都会重定向到 https,但是根据我从您的评论中了解到的情况,HTTPS 将无法访问 LXD 容器 futura-ca?如果是这样,我应该怎么做?我对反向代理和 LXD 很陌生,所以任何代码都会受到高度赞赏,谢谢!
  • 我建议在新的 VPS 上再次尝试 Linode 教程。您需要根据需要配置主机名。 proxy 容器是 TLS(SSL,又名 HTTPS)连接终止的地方,与网站容器的进一步连接是纯 HTTP 连接。这就是 TLS 终止代理的工作原理。
  • 我目前正在阅读有关 TLS 终止的信息。但是,我只使用 HTTPS 更改了 ca.domain.name。 apache.domain.com 和 nginx.domain.com 都使用 HTTP。如果 HTTPS 像那样工作,我确定我可以在没有 HTTPS 的情况下使用子域,但是我需要将 proxy_pass 传递给一个在 HTTPS 上有网站的容器,由于缺乏我在这个领域的知识,谷歌越来越难上:(
猜你喜欢
  • 2017-04-24
  • 2019-01-14
  • 2021-05-04
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
相关资源
最近更新 更多