【开发日记】换掉Nginx,使用HAProxy作为反向代理服务器

这篇具有很好参考价值的文章主要介绍了【开发日记】换掉Nginx,使用HAProxy作为反向代理服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HAProxy,全称为 "High Availability Proxy",是一款开源的、高性能的负载均衡器和代理服务器。主要用于改善应用程序的可用性、可靠性和性能。

与大众熟知的Nginx相比各有优缺点,如果你需要的是一个Web服务器,还是首选Nginx,虽然HAProxy也能实现相同效果,但却需要通过十分繁琐的配置才能达到与Nginx相同的水平。

HAProxy最擅长的还是负载均衡、限流、反向代理,在这些方向HAProxy的性能是明显高于Nginx的。

最重要的是Nginx有一个致命的问题就是作为反向代理服务器时有DNS缓存,并且即使配置了DNS缓存有效时间也不能生效,当然也有可能是我的打开方式不对。

下面是我使用HAProxy作为反向代理服务器的一个案例,可进行参考。

1、运行环境

操作系统:Ubuntu 20.04

HAProxy版本:HAProxy 2.6.16

2、安装HAProxy

sudo apt-get update
sudo apt-get install haproxy

3、配置文件

HAProxy的配置文件路径位于/etc/haproxy/haproxy.cfg

先把配置文件的全部内容放出来,下面对配置内容进行说明:

global
    chroot /var/lib/haproxy
    daemon
    resolvers mydns
        nameserver dns1 223.5.5.5:53
        nameserver dns2 114.114.114.114:53
        hold valid 120s
 
defaults
    log global
    mode http
    option httplog
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend https_front
    bind *:443 ssl crt /etc/haproxy/test.cn.pem
    acl url_online path_beg /online
    use_backend online_backend if url_online

frontend http_front
    bind *:80
    acl url_online path_beg /online
    use_backend online_backend if url_online

backend online_backend
    http-request set-header X-Real-IP %[src]
    http-request set-path %[path,regsub(^/online/,/)]
    server tworice www.test.com:8002 check resolvers mydns resolve-prefer ipv4

4、全局参数

在 HAProxy 配置文件中,global 部分用于设置全局参数,这些参数会影响 HAProxy 的整体运行方式。

global
    chroot /var/lib/haproxy
    daemon
    resolvers mydns
        nameserver dns1 223.5.5.5:53
        nameserver dns2 114.114.114.114:53
        hold valid 120s

在如上配置中,chroot /var/lib/haproxy表示将HAProxy 的运行环境隔离到指定的目录,这样攻击者就无法访问运行环境之外的文件系统了。

daemon表示HAProxy 以守护后台进程模式运行。

resolvers mydns ...表示指定DNS服务器,并且DNS缓存最多保存120秒。

5、默认参数

在 HAProxy 的配置中,defaults 用于定义默认设置。这部分的设置会应用于配置文件中后续定义的所有 frontend 和 backend 部分,但可以被覆盖。

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

mode http表示当前工作模式为 HTTP 模式,用于HTTP 负载均衡器或 HTTP 反向代理。

timeout connect 5000ms表示HAProxy 尝试与后端服务器建立连接的最大等待时间。

timeout client 50000ms表示客户端与 HAProxy 之间的最大闲置连接时间。

timeout server 50000ms表示HAProxy 与后端服务器之间的最大闲置连接时间。

6、前端部分

前端部分表示HAProxy 接收进入连接的入口点。在前端部分定义如何处理进入的客户端请求。

bind *:443 ssl crt /etc/haproxy/test.cn.pem

以上配置表示监听443端口,并且指定了SSL证书。

acl url_online path_beg /online

以上配置表示创建了一个名为url_online的访问控制项,用于检查进入请求的 URL 路径是否以 /online 开头。

use_backend online_backend if url_online

以上配置表示如果满足名为url_online的访问控制项条件后将流量转发到名为online_backend的后端部分。

7、后端部分

后端部分表示HAProxy定义处理请求的服务器配置。

http-request set-header X-Real-IP %[src]

以上配置表示将请求头中的X-Real-IP参数设置为请求的源IP地址。

http-request set-path %[path,regsub(^/online/,/)]

以上配置表示修改请求路径内容,将路径中的/online/替换为/。原始请求路径为 /online/example,修改后的路径将变为 /example

server tworice www.test.com:8002 check resolvers mydns resolve-prefer ipv4

以上配置定义了一个名为tworice后台服务器,服务器的地址为www.test.com:8002check表示定期检查该服务器的健康状况;resolvers mydns表示使用我们在全部参数中设置的DNS解析器来解析该服务器域名;resolve-prefer ipv4表示解析DNS时优先使用IPv4地址。

8、SSL证书

配置文件中使用到的SSL证书用的是阿里云的免费证书,下载证书时候选择Apache服务器类型,如下图所示。

【开发日记】换掉Nginx,使用HAProxy作为反向代理服务器,开发日记,nginx,运维

下载SSL证书

下载完成后进行解压,解压后会得到如下几个文件:test.com_chain.crttest.com.keytest.com_public.crt

使用如下命令生成HAProxy需要的密钥文件:

cat test.com_public.crt test.com_chain.crt test.com.key > /etc/haproxy/test.com.pem

命令中的文件路径请根据自己的文件路径调整。文章来源地址https://www.toymoban.com/news/detail-823085.html

到了这里,关于【开发日记】换掉Nginx,使用HAProxy作为反向代理服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx使用之反向代理、负载均衡、动静分离

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强。 其他服务器介绍:Apache服务器、Tomcat服务器、Lighttpd服务器 正向代理 是代理用户客户端,为客户端发送请求, 对服务器隐藏自己的真实客户端。 用途:1

    2024年02月11日
    浏览(33)
  • 拓展操作(四) 使用nginx反向代理jenkins

    让清单成为一种习惯 互联网时代的变革,不再是简单的开发部署上线,持续,正确,安全地把事情做好尤其重要;把事情做好的前提是做一个可量化可执行的清单,让工程师就可以操作的清单而不是专家才能操作: 设定检查点 根据节点执行检查程序 操作确认或边读边做 二

    2024年01月18日
    浏览(44)
  • Nginx从安装到使用,反向代理,负载均衡

    1.1、Nginx介绍 Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。 Nginx是由 伊戈

    2024年02月10日
    浏览(26)
  • 使用nginx作udp协议的反向代理

    http://nginx.org/en/docs/stream/ngx_stream_core_module.html 注意:stream:server模块中不支持tcp协议中的location配置二级目录转发 版本号需要1.9.0 模块有 --with-stream【注意检查】 因为udp与tcp是同级的两种通信协议,所以与http模块平齐 nginx.conf文件内容增加如下stream配置 udp :说明是代理udp协议

    2024年02月08日
    浏览(27)
  • 在Windows中使用Nginx实现反向代理

    Nginx介绍 Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。Nginx可以作为静态页面的web服务器,同

    2024年02月08日
    浏览(25)
  • 在docker中使用Nginx并实现反向代理

    使用Nginx反向代理,可以通过不同的子域名访问到不同服务器的端口上 下面来介绍怎么在Docker容器中使用Nginx反向代理。 1.安装Docker 确保你的系统上已经安装了Docker。具体可以Docker官方网站上找到适合你系统的安装指南。 2.创建一个新的Docker容器 首先,创建一个新的Docker容器

    2024年02月16日
    浏览(42)
  • 【云原生】使用nginx反向代理后台多服务器

    背景 随着业务发展, 用户访问量激增,单台服务器已经无法满足现有的访问压力,研究后需要将后台服务从原来的单台升级为多台服务器,那么原来的访问方式无法满足,所以引入 nginx 来代理多台服务器,统一请求入口。 什么是nginx Nginx[engine x]是一个免费开源Web服务器,是

    2024年02月04日
    浏览(39)
  • 实战指南:使用 Nginx 反向代理实现多端口跳转

    在现代 Web 开发中,Nginx作为一款高性能的开源反向代理服务器,提供了强大的功能来管理网络流量和路由。本文将介绍如何利用 Nginx 的反向代理功能,将不同路径的请求转发到不同端口的 Tomcat 服务上,以实现多端口跳转的效果。 使用 Nginx 的强大反向代理功能,我们能够根

    2024年02月19日
    浏览(37)
  • 编译安装Nginx和使用五种算法实现Nginx反向代理负载均衡

    目录 Ubuntu中安装Nginx 概念介绍 负载均衡 几种负载均衡算法 反向代理 环境规划 配置反向代理 加权负载均衡(Weighted Load Balancing) 轮询(Round Robin) IP 哈希(IP Hash) 最少连接(Least Connections) URL 哈希(URL Hash) 想要安装nginx,首先我们需要有一台Ubuntu的虚拟机,然后最好在

    2024年01月25日
    浏览(38)
  • 使用 Docker 和 Nginx 反向代理访问 ChatGPT API

    在许多应用程序中,我们需要从一个外部服务中获取数据。然而,由于种种原因(例如跨域问题、API 访问限制等),我们可能无法直接从客户端访问这些服务。这时,反向代理可以成为我们的救星。在这篇文章中,我们将介绍如何使用 Docker 和 Nginx 反向代理访问 OpenAI API 接口

    2023年04月09日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包