zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

Nginx搭建与配置:打造高性能Web服务器和反向代理

2023-09-14 09:14:15 时间

Ngix是一个开源的高性能的HTTP服务器和反向代理服务器,它具有异步,事件驱动的架构,非常适合高流量的 Web 站点和 APIs 所需求的可扩展性,可靠性和高可用性的需要。本篇博客旨在帮助初学者配置Nginx,并重点介绍Nginx的核心配置参数。

目录

一、Nginx 的搭建

1.安装 Nginx

2.启动和检查nginx服务

3.配置防火墙

4.测试Nginx

二、Nginx 的核心配置

1.server

2.location

3.upstream

三、结论


一、Nginx 的搭建

1.安装 Nginx

以Ubuntu系统为例,可以使用以下命令安装nginx:

sudo apt update
sudo apt install nginx

2.启动和检查nginx服务

安装完成后,使用以下命令启动和检查nginx服务

sudo systemctl start nginx
sudo systemctl status nginx

命令运行后能够看到nginx运行状态为“active (running)”即为成功,如下例所示:

nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2021-11-16 23:29:20 +08; 10h ago

3.配置防火墙

如防火墙有开启,需添加nginx的规则使其可以通过防火墙访问。默认情况下,nginx使用的是TCP端口80和443,但我们可以在需要时更改它们。例如,如果要更改http协议使用的端口号,请编辑文件/etc/nginx/nginx.conf并找到以下行:

listen 80 default_server;

将其更改为:

listen 8080 default_server;

4.测试Nginx

完成上述配置后,使用Web浏览器访问服务器IP地址、域名、主机名以确定Nginx 网站服务器是否正常运行。

二、Nginx 的核心配置

1.server

server指令是Nginx配置的一个基本模块,负责处理请求的分发。每个server指令包含了一组配置参数,在某个请求来到Nginx时,就会根据这些参数来处理该请求。

在Nginx中,server指令都放在 http 块之内,如下:

http {
    server {
        ...
    }
}

每个server块中关键指令有:

  • listen: 确定Nginx应使用的端口和协议进行监听
  • server_name: 决定哪个请求应该由该server块处理
  • root:确定该server块应为请求服务的文件系统路径
  • index:用于确定当请求基于目录请求时,应使用哪个文件作为默认文档返回

下面是一个简单的展示了server指令的核心功能:

http {
    server {
        listen 80;
        server_name localhost;
        root /var/www;
        index index.html;

        location / {
        }
    }
}

2.location

Nginx中的location指令可以匹配URI路径,并且能使Nginx处理这些请求。

在Nginx配置文件中,location指令通常语法为:

location uri {
    ...
}

其中uri可以是正则表达式或静态URI路径等类型。uri是用来匹配请求路径的。

location主要有以下三种类型:

  • location =:精确匹配请求字符串,匹配成功即停止匹配;
  • location ~:正则表达式匹配,区分大小写;
  • location ~*:正则表达式匹配,不区分大小写;

下面是一个简单的展示了location指令的核心功能:

http {
    server {
        listen 80;
        server_name localhost;
        root /var/www;
        index index.html;

        location /pictures/ {
            try_files $uri/index.html $uri =404;
        }

        location /downloads {
            try_files $uri /downloads/index.html =404;
            autoindex on; # 开启自动目录索引功能
        }
    }
}

在上面的示例中,我们通过location指令来处理不同的请求。例如,当来自 /pictures/ 路径的请求时,Nginx将尝试使用 $uri/index.html 和 $uri。 当来自 /downloads 路径的请求时,Nginx会跳转到 /downloads/index.html,也会启用自动索引功能。

3.upstream

在Nginx配置文件中,upstream指令用于定义后端服务。当一些请求到达Nginx,它通常会转发到充当反向代理的Web服务器。通过使用 upstream指令,可以在Nginx配置文件中定义这些反向代理服务器列表,以供随后使用。

在Nginx中,可以通过以下方法来配置upstream:

http {
    upstream test_web_servers {
        server 192.168.1.10:8080;
        server 192.168.1.11:8080;
        server 192.168.1.12:8080;
        server 192.168.1.13:8080;
    }

    server {
        location / {
            proxy_pass http://test_web_servers;
        }
    }
}

在此示例中,我们使用 upstream 指令为一组反向代理服务器创建了一个列表,然后将其传递给proxy_pass指令,以便处理由 Nginx 转发到该服务器的所有请求。

除了proxy_pass指令以外,因为默认情况下,如果NGINX无法通过某些措施解决请求,就会出现“502 Bad Gateway”错误,因此upstream也有其他几个配置选项:

  • least_conn:轮询方法,选择最少连接的服务器
  • ip_hash:IP哈希方法,为请求分配服务器
  • keepalive:消息保持连接时限,保持连接池打开的最大空闲连接的最大数量等、

三、结论

本篇博客展示了Nginx的基本搭建,以及核心配置文件的重要指令,能够对于初学者来说能够作为一个入门指南。这些配置可以使您开始运行专业的Web服务器,也可以通过更改参数来优化,以获得更好的性能和可靠性的体验。实践中,您还可能根据需要自定义其他指令,以满足特定的需求和需求。