返回

Nginx 系列(二) -- 教你轻松搞定Nginx 基本配置

前端

在Nginx 系列(一)中,我们对Nginx的基本架构进行了详细的介绍,相信大家已经对Nginx有了一个初步的了解。本篇,我们将为大家带来Nginx的基本配置篇,让大家了解基本的Nginx配置,为后续的高级配置打下坚实的基础。

Nginx的基本配置主要包括以下几个方面:

  • 服务器块(server blocks) :服务器块是Nginx用来定义一个虚拟主机的配置信息,包括监听端口、根目录、索引文件等。
  • 虚拟主机(virtual hosts) :虚拟主机是Nginx用来为不同的域名提供不同内容的配置,可以有多个虚拟主机配置在一个Nginx服务器上。
  • 反向代理(reverse proxy) :反向代理是Nginx用来将客户端的请求转发到其他服务器的配置,可以实现负载均衡、故障转移等功能。
  • 负载均衡(load balancing) :负载均衡是Nginx用来将客户端的请求均匀地分配到多个服务器上的配置,可以提高系统的可用性和性能。
  • 安全设置(security) :安全设置是Nginx用来保护服务器免受攻击的配置,包括访问控制、防火墙等。
  • 性能调优(performance tuning) :性能调优是Nginx用来提高服务器性能的配置,包括缓存、压缩等。

下面,我们将分别对这几个方面进行详细的介绍。

服务器块(server blocks)

服务器块是Nginx用来定义一个虚拟主机的配置信息,包括监听端口、根目录、索引文件等。一个服务器块通常由以下几部分组成:

  • listen指令 :指定服务器块监听的端口,可以是数字端口或命名端口。
  • server_name指令 :指定服务器块的主机名或IP地址。
  • root指令 :指定服务器块的根目录,即存放网站内容的目录。
  • index指令 :指定服务器块的索引文件,即当访问一个目录时,如果目录中没有指定的文件,则返回索引文件。

下面是一个简单的服务器块配置示例:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html index.php;
}

这个服务器块配置了一个监听80端口、主机名为example.com和www.example.com、根目录为/var/www/example.com、索引文件为index.html和index.php的虚拟主机。

虚拟主机(virtual hosts)

虚拟主机是Nginx用来为不同的域名提供不同内容的配置,可以有多个虚拟主机配置在一个Nginx服务器上。虚拟主机的配置与服务器块的配置非常相似,只是多了几个指令:

  • server_name指令 :指定虚拟主机的域名。
  • root指令 :指定虚拟主机的根目录。
  • index指令 :指定虚拟主机的索引文件。

下面是一个简单的虚拟主机配置示例:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.html index.php;
}

server {
    listen 80;
    server_name www.example.com;
    root /var/www/www.example.com;
    index index.html index.php;
}

这个虚拟主机配置了两个虚拟主机,一个为主域名example.com,另一个为二级域名www.example.com。两个虚拟主机的根目录和索引文件都不同。

反向代理(reverse proxy)

反向代理是Nginx用来将客户端的请求转发到其他服务器的配置,可以实现负载均衡、故障转移等功能。反向代理的配置主要使用proxy_pass指令,该指令指定了要将客户端的请求转发到的服务器地址。

下面是一个简单的反向代理配置示例:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.html index.php;

    location /api {
        proxy_pass http://localhost:8080;
    }
}

这个反向代理配置将所有以/api开头的请求转发到localhost:8080服务器。

负载均衡(load balancing)

负载均衡是Nginx用来将客户端的请求均匀地分配到多个服务器上的配置,可以提高系统的可用性和性能。负载均衡的配置主要使用upstream指令和server指令,upstream指令定义了一个服务器组,server指令将客户端的请求转发到服务器组中的服务器。

下面是一个简单的负载均衡配置示例:

upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.html index.php;

    location / {
        proxy_pass http://backend;
    }
}

这个负载均衡配置将所有客户端的请求均匀地分配到192.168.1.10:8080、192.168.1.11:8080和192.168.1.12:8080这三台服务器上。

安全设置(security)

安全设置是Nginx用来保护服务器免受攻击的配置,包括访问控制、防火墙等。访问控制主要使用location指令和allow、deny指令,location指令指定了要保护的URL,allow和deny指令指定了允许或禁止访问的IP地址或用户代理。防火墙主要使用limit_req指令,该指令可以限制客户端的请求速率。

下面是一个简单的安全设置配置示例:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.html index.php;

    location /admin {
        allow 192.168.1.0/24;
        deny all;
    }

    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;

    location / {
        limit_req zone=one;
    }
}

这个安全设置配置禁止了所有IP地址访问/admin目录,只允许192.168.1.0/24网段的IP地址访问。同时,还限制了所有客户端的请求速率,每个客户端每秒只能发送5个请求。

性能调优(performance tuning)

性能调优是Nginx用来提高服务器性能的配置,包括缓存、压缩等。缓存主要使用proxy_cache指令,该指令可以将客户端的请求结果缓存起来,以便下次请求时直接从缓存中返回。压缩主要使用gzip指令,该指令可以对客户端的请求结果进行压缩,从而减少传输的数据量。

下面是一个简单的性能调优配置示例:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.html index.php;

    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 302 1h;
        proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;

        gzip on;
        gzip_min_length 1k;
        gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json;
    }
}

这个性能调优配置将所有客户端的请求结果缓存1小时,并对所有类型的文件进行压缩。

总结

以上就是Nginx的基本配置,希望对大家有所帮助。在下一篇文章中,我们将为大家带来Nginx的高级配置,敬请期待。