返回
用好基础模块,就能玩转Nginx
前端
2024-02-10 18:36:25
Nginx的基础模块配置
Nginx的基础模块包括了HTTP模块、mail模块、stream模块等。HTTP模块是Nginx的核心模块,负责处理HTTP请求。mail模块用于处理邮件服务。stream模块用于处理TCP/UDP流数据。
HTTP模块的配置
HTTP模块的配置主要包括了以下几个方面:
- 监听端口:指定Nginx监听的端口号。
- 服务器名:指定Nginx的服务器名。
- 根目录:指定Nginx的根目录。
- 索引文件:指定Nginx的索引文件。
- MIME类型:指定Nginx的MIME类型。
- 错误页面:指定Nginx的错误页面。
mail模块的配置
mail模块的配置主要包括了以下几个方面:
- 邮件服务器地址:指定邮件服务器的地址。
- 邮件服务器端口:指定邮件服务器的端口号。
- 用户名:指定用于登录邮件服务器的用户名。
- 密码:指定用于登录邮件服务器的密码。
- 邮件发送地址:指定邮件发送地址。
stream模块的配置
stream模块的配置主要包括了以下几个方面:
- 监听端口:指定Nginx监听的端口号。
- 服务器类型:指定Nginx的服务器类型。
- 代理服务器地址:指定Nginx的代理服务器地址。
- 代理服务器端口:指定Nginx的代理服务器端口号。
Nginx的基础模块使用举例
使用Nginx作为静态资源服务器
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
}
上述配置将Nginx配置为一个静态资源服务器,监听80端口,服务器名为example.com,根目录为/var/www/html,索引文件为index.html。
使用Nginx作为反向代理服务器
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
}
}
上述配置将Nginx配置为一个反向代理服务器,监听80端口,服务器名为example.com,将所有请求转发给后端的应用程序服务器,应用程序服务器的地址为localhost,端口号为8080。
使用Nginx作为微服务网关
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
limit_req zone=one burst=5 nodelay;
if ($http_x_forwarded_for) {
set $realip $http_x_forwarded_for;
} else {
set $realip $remote_addr;
}
lua_shared_dict shared_dict 1m;
lua_code_cache shared_dict;
access_by_lua_block {
local cjson = require("cjson")
local ok, err = ngx.shared.dict.get(shared_dict, $realip)
if not ok then
ngx.shared.dict.add(shared_dict, $realip, cjson.encode({count=0, timestamp=ngx.time()}))
end
local data = cjson.decode(ok)
if ngx.time() - data["timestamp"] > 60 then
data["count"] = 0
data["timestamp"] = ngx.time()
ngx.shared.dict.set(shared_dict, $realip, cjson.encode(data))
end
data["count"] = data["count"] + 1
if data["count"] > 10 then
ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE)
end
}
}
}
上述配置将Nginx配置为一个微服务网关,监听80端口,服务器名为example.com,将所有请求转发给后端的应用程序服务器,应用程序服务器的地址为localhost,端口号为8080。同时,该配置还使用了Lua语言来实现限流和熔断功能。当客户端的请求数超过10次/分钟时,Nginx将返回503错误。