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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

本文主要介绍 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;
        }
    }
}

以上配置表示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;
        }
    }
}

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

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

如果请求的主机名为example2.comNginx会在/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定义的后端服务器
        }
    }
}

以上配置表示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定义的后端服务器
        }
    }
}

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

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

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginx

“Nginx 如何配置http server 、负载均衡(反向代理)” 的相关文章

Nginx与LUA(5)1年前 (2023-02-02)
玩Nginx11年前 (2023-02-05)
Nginx基本使用1年前 (2023-02-06)
nginx的高可用---Keepalived1年前 (2023-02-06)
Nginx常用配置规则1年前 (2023-02-07)
Linux下Nginx的安装1年前 (2023-02-08)
Nginx1年前 (2023-02-08)