• Nginx 如何配置http server 、负载均衡(反向代理)


    本文主要介绍 Nginx中如何配置 http server,负载均衡(反向代理)。

    1. 关于 Nginx

    Nginx是一个开源的、高性能的、稳定的、简单的、功能丰富的HTTP和反向代理服务器,也可以用作IMAP/POP3/SMTP代理服务器。它使用了异步事件驱动的架构,可以支持高并发连接。
    Nginx的主要功能包括:

    • HTTP服务器:Nginx可以作为一个Web服务器使用,提供HTTP服务。它支持静态文件服务,SSL和TLS协议,虚拟主机等功能。
    • 反向代理和负载均衡:Nginx可以作为反向代理服务器,代理HTTP或非HTTP服务。同时,它还提供了负载均衡的功能,可以将请求分发到后端的多个服务器。
    • 邮件代理服务器:Nginx还可以作为IMAP/POP3/SMTP代理服务器。
    • TCP/UDP代理服务器:Nginx可以代理TCP和UDP服务。
      Nginx的设计目标是提供高性能、高并发、低内存使用的网络服务。它广泛应用于网站的服务端,是目前最流行的Web服务器之一。

    与Nginx类似的软件主要包括以下几种:

    • Apache HTTP Server:这是最流行的Web服务器软件之一,功能强大,模块众多,可以通过配置满足各种需求。
    • Microsoft IIS:这是微软提供的Web服务器软件,与Windows系统集成度高,支持.NET等微软技术。
    • Lighttpd:这是一个轻量级的Web服务器软件,资源占用少,性能优秀,适合在资源有限的环境中使用。
    • Caddy:这是一个新型的Web服务器软件,配置简单,自动支持HTTPS。
    • Tomcat:这是Apache的一个开源项目,主要用来运行Java代码,常常被用作Web服务器和Java应用服务器。
    • Node.js:虽然主要是一个JavaScript运行环境,但由于其事件驱动和非阻塞I/O模型,也常常被用来编写Web服务器。

    以上这些软件都可以作为Web服务器使用,但各自的特性和优势不同,需要根据实际需求选择合适的软件。

    2. 配置http server

    在Nginx中,配置HTTP服务器主要是通过编辑Nginx的配置文件,通常是nginx.conf。

    以下是一个基本的HTTP服务器配置示例:

    http {
        server {
            listen 80;  # 监听80端口
            server_name example.com;  # 设置服务器名称
    
            location / {
                root /var/www/html;  # 设置网站根目录
                index index.html index.htm;  # 设置默认首页
            }
    
            # 处理错误页面
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
                root /var/www/html;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    以上配置表示,Nginx会监听80端口,处理来自example.com的请求。

    当请求的URL路径为/(即网站的根路径)时,Nginx会在/var/www/html目录下查找index.htmlindex.htm文件并返回。如果发生500、502、503或504错误,Nginx会返回/var/www/html/50x.html文件的内容。

    以上只是一个基本的配置示例,实际上Nginx的配置可以非常复杂,可以配置反向代理、负载均衡、URL重写等高级功能。具体的配置方法需要根据实际需求进行。

    接着,再看下,如何配置多个http server。

    在Nginx中,可以在配置文件中定义多个server块来配置多个HTTP服务器。

    每个server块代表一个虚拟主机,可以监听不同的端口,或者处理不同的域名。

    以下是一个配置多个HTTP服务器的示例:

    http {
        # 第一个HTTP服务器
        server {
            listen 80;
            server_name example1.com;
    
            location / {
                root /var/www/example1;
                index index.html index.htm;
            }
        }
    
        # 第二个HTTP服务器
        server {
            listen 8080;
            server_name example2.com;
    
            location / {
                root /var/www/example2;
                index index.html index.htm;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    以上配置表示,Nginx会监听80, 8080端口,处理来自example1.comexample2.com的请求。

    当请求的URL路径为/时,如果请求的主机名为example1.com,Nginx会在/var/www/example1目录下查找index.htmlindex.htm文件并返回;

    如果请求的主机名为example2.com,Nginx会在/var/www/example2目录下查找index.htmlindex.htm文件并返回。

    3. 配置负载均衡

    Nginx支持以下几种负载均衡方式:

    • 轮询(Round Robin):这是默认的负载均衡方式。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    • 权重(Weight):不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此Nginx允许指定每个服务器的处理能力。权重越高,分配的请求越多。
    • IP Hash:每个请求的IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    • 最少连接(Least Connections):优先分配给当前连接数最少的服务器,适用于请求处理时间相差较大的情况。
    • URL Hash:按照访问URL的hash结果来分配请求,使得每个URL定向到同一个后端服务器,可以在后端服务器生成缓存的情况下提高系统效率。

    以上负载均衡方式中,轮询、权重和IP Hash是Nginx内置支持的,最少连接和URL Hash需要使用Nginx的第三方模块,如ngx_http_upstream_least_conn_modulengx_http_upstream_hash_module

    在Nginx中,配置负载均衡主要是通过upstream模块和proxy_pass指令实现的。以下是一个基本的负载均衡配置示例:

    http {
        upstream backend {
            server backend1.example.com;
            server backend2.example.com;
        }
    
        server {
            listen 80;
            server_name example.com;
    
            location / {
                proxy_pass http://backend;  # 将请求转发到upstream定义的后端服务器
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    以上配置表示,Nginx会监听80端口,处理来自example.com的请求。

    当请求的URL路径为/(即网站的根路径)时,Nginx会将请求轮询地转发到backend1.example.combackend2.example.com

    除了基本的轮询负载均衡,Nginx还支持其他几种负载均衡方式,例如权重、IP Hash等。

    配置基于权重的负载均衡可以通过在upstream模块中为每个server指令添加weight参数来实现。
    以下是一个基于权重的负载均衡配置示例:

    http {
        upstream backend {
            server backend1.example.com weight=3;
            server backend2.example.com;
        }
    
        server {
            listen 80;
            server_name example.com;
    
            location / {
                proxy_pass http://backend;  # 将请求转发到upstream定义的后端服务器
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    以上配置表示,Nginx会监听80端口,处理来自example.com的请求。

    当请求的URL路径为/(即网站的根路径)时,Nginx会将请求转发到backend定义的后端服务器。这些服务器会按照权重的方式进行负载均衡,backend1.example.com的权重为3,backend2.example.com的权重为1(默认值),因此backend1.example.com会接收到更多的请求。

    以上,本文主要介绍了 Nginx中配置 http server,负载均衡(反向代理)的基本方式。

  • 相关阅读:
    Springboot+实验课程辅助管理系统 毕业设计-附源码191113
    minicom使用记录及ubuntu配置IP地址
    Mac--WebStorm-前端环境配置(node.js+yarn)Taro框架使用
    GBase 8c V3.0.0数据类型——安全函数
    Django之模型层
    RabbitMQ 学习(六)---- 路由订阅模型
    2022 全球 AI 模型周报
    java 自定义异常
    数据清洗:相似重复记录检测算法SNM及其Python实现
    2021年认证杯SPSSPRO杯数学建模A题(第一阶段)医学图像的配准全过程文档及程序
  • 原文地址:https://blog.csdn.net/lanyang123456/article/details/133500653