pfSense2.4 + HAProxy – 将外部https流量代理到内部多个站点

目录

  • 介绍
  • 第1步 – 安装HAProxy插件
  • 第2步 – 配置HAProxy
  • 第3步 – 创建HAProxy后端
  • 第4步 – 创建共享的HAProxy HTTPS前端
  • 第5步 – 创建单个主机前端
  • 第6步-  启用HTTP到HTTPS重定向
  • 第7步 – 通过防火墙启用WAN端口80和443到路由器
  • 测试

介绍

我在Ubuntu服务器16.04.3 VM(phxlv-prx01)中有一个nginx服务,可以将我的所有网络流量(公共和私有)反向代理到我的实际“后端”服务器。这对于我的所有公共和私人网络流量(blog,git,plex,sabnzbd,sonarr,洪水)来说都是一个很好的入口点。但是,这会有一个潜在的安全问题,因为保护我的内部非公开可寻址的Web流量面板(如洪水,sab,sonarr等)的唯一因素是我的外部DNS主机(AWS Route53)中的DNS条目。

为了消除这个安全隐患,我选择在我的pfSense-2.4上使用HAProxy将特定的面向公众的页面(博客,git,云)代理到适当的后端VM。

第1步 – 安装HAProxy插件

登录pfSense管理面板,进入System > Package Manager > Available Packages,然后安装haproxy插件。

第2步 – 配置HAProxy

插件安装完成后,导航到Services > HAProxy > Settings,进行配置,确保选中Enable HAProxy,然后单击Save。

我的设置如下:
HAProxy的 - 设置 - 1

第3步 – 创建HAProxy后端

backends(后端)是HAProxy称之为实际的连接服务器,这在NGINX中称为“上游”。下一步是为每个主机创建一个HAProxy后端,我有三个主机(博客,云,git),配置后如下图所示:
HAProxy的-后端-1

blog.devita.co的配置如下所示:
blog.devita.co-后端-1

blog.devita.co-后端-2-

我的Linux VM在我的“SLAN”接口上运行,“Transparent Client IP(透明客户端IP)”部分应该使用SLAN接口进行连接。

对每个单独的后端“应用程序”或“服务器”重复该项操作,你也可以复制一个接口,然后根据需要进行编辑。

第4步 – 创建共享的HAProxy HTTPS前端

frontends(前端)是HAProxy用于将内容映射到后端的内容,在本例中是将主机名映射到字符串并将匹配的流量发送到适当的后端。

第一步是创建一个所有“vhosts”都属于的共享前端。我正在使用带有ACME证书包的https免费LetsEncrypt SSL证书,所以如果你正在做SSL,请确保将SSL部分加到下面的截图中。

我的共享前端看起来像这样:
共享-前端-1

共享-前端-2-

第5步 – 创建单个主机前端

现在为每个主机创建一个单独的“前端”,确保选中“Shared Frontend”并选择“shared-frontend”作为“Primary Frontend”!

我的blog.devita.co前端如下图所示:

blog.devita.co-前端-1

为其他主机进行重复操作,更改ACL来匹配相应的主机名。

第6步 – 启用HTTP到HTTPS重定向

最后,需要将端口80重定向到端口443,可以使用另一个前端。

创建一个新的前端称为“http-to-https”并使其符合如下设置:
HTTP到HTTPS重定向

默认情况下,这会将所有http重定向到https。

第7步 – 通过防火墙启用WAN端口80和443到路由器

最后一步是允许TCP/80和TCP/443通过WAN接口上的防火墙。转到Firewall > Rules > WAN,并创建两个如下所示的新规则:

HTTP(80)

防火墙寰-80

HTTPS(443)

防火墙婉-443

如下所示:
湾的防火墙规则-1

测试

现在访问http://yourdomain.com,会重定向到https://yourdomain.com,并正确地转到后端服务器。

原文地址