FreeBSD jails and Sockets



我对从 Linux 切换 freeBSD 很陌生。

我读过关于监狱的信息,该解决方案听起来非常适合服务器系统。所以我对我的网络服务器的想法是创建 3 个监狱。一个监狱用于mysql,一个监狱用于nginx,一个监狱用于php-fpm。现在监狱必须相互沟通。我该怎么做?

通过 IP?这将是一个很大的开销,但安全。下面是一个示例:

  • 客户
    • -> TCP/IP -> NGINX
    • -> TCP/IP -> PHP-FPM
    • -> TCP/IP -> MYSQL
    • -> TCP/IP -> PHP-FPM
    • -> TCP/IP -> NGINX
    • -> TCP/IP ->客户端

使用套接字:那将是一个安全损失。

  • 在主机系统上创建目录
  • 在监狱中创建目录
  • 合并目录

您使用哪种解决方案?或者你有更好的解决方案吗?

我不会分开 php-fpm,但这是可能的。如今,IP通信的开销并不大,考虑到数据库和php处理器需要进行的处理要大得多,因此并不那么重要。特别是因为没有涉及实际的电线。数据包通过环回构造通过接口路由,不会碰到线路。

分离的好处是,如果需要,

您可以将监狱移动到另一台物理机器上,移动监狱是轻而易举的。

为了澄清为什么不在单独的监狱中移动php-fpm,修改网站成为静态内容(图像)和动态内容(php文件)的双任务过程。优点是Web服务器软件中的漏洞无法修改php代码。这也是为什么如果你打算分开,你不应该把你的php代码清空到网络服务器监狱,因为它会破坏它的优势。

我真的不知道这是否是最好的解决方案,但如果您可以使用Unix domain sockets则可以在三个监狱之间共享一个坐骑。命名空间是隔离的(它们无法在共享装入点之外创建套接字),并且它们应该能够通信。

要创建共享挂载,您可以使用nullfs挂载。关于监狱的一个很好的(相当高级的)指南也谈到了nullfs坐骑。当然,此挂载点应仅用于套接字,其他文件应保持独立。

同样,我不知道这些应用程序是否可以通过Unix套接字进行通信,但如果可以,您可能已经设置好了。

最新更新