在Nginx的第三天学习中,我对Nginx的配置、优化和安全性有了更深入的了解。以下是我在这三天学习中总结的一些关键知识点和学习笔记。
一、Nginx配置
- 基本配置
Nginx的配置文件位于/etc/nginx/nginx.conf。在这个文件中,我们可以定义服务器块(server blocks)、位置块(location blocks)和其他的配置设置。例如,我们可以定义一个HTTP服务器块来监听80端口,并将请求重定向到本地的一个PHP应用程序。
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
try_files $uri $uri/ /index.php?$query_string;
}
}
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
try_files $uri $uri/ /index.php?$query_string;
}
}
- 负载均衡
Nginx支持多种负载均衡算法,例如轮询、IP哈希和最少连接数。我们可以在一个服务器块中定义多个上游服务器,并指定负载均衡算法来分配请求。
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
#ip_hash; # 使用IP哈希算法
#least_conn; # 使用最少连接数算法
round_robin; # 使用轮询算法
}
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
#ip_hash; # 使用IP哈希算法
#least_conn; # 使用最少连接数算法
round_robin; # 使用轮询算法
}
二、Nginx优化
- 缓存设置
Nginx支持各种缓存设置,包括缓存头、缓存时间和缓存响应。我们可以使用expires
指令来设置缓存头和缓存时间。例如,以下指令将响应的缓存时间设置为1天。
csslocation ~* \.(jpg|jpeg|png|gif|css|js)$ {
expires 1d;
}
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
expires 1d;
}
- Gzip压缩
通过使用Gzip压缩,可以减小响应的大小并提高传输速率。Nginx默认已经启用了Gzip压缩,我们可以在配置文件中使用gzip_types
指令来指定需要压缩的文件类型。
cssgzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
三、Nginx安全性
- 防止DDoS
Nginx提供了许多防止DDoS的选项,例如限制并发连接数、限制请求速率和限制客户端IP地址。我们可以使用http_限
指令来限制并发连接数和请求速率,使用geo
指令来限制客户端IP地址。例如,以下指令将限制每个IP地址的并发连接数为100个。