Nginx 系列(二) -- 教你轻松搞定Nginx 基本配置
2023-10-05 08:34:21
在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的高级配置,敬请期待。