nginx的配置文件通常在 /etc/nginx/nginx.conf , /etc/nginx/conf.d/*.conf 中 , 一般直接 改 conf.d目录下的 default.conf 文件, 然后 先检测配置文件是否有错误
nginx -t
再重新加载配置文件 或 重启nginx ,命令如下
nginx -s reload
或
systemctl restart nginx
1 入门
# 这是一个最基本的Nginx配置,监听80端口,并返回根目录下的index.html文件
server {
listen 80; # 监听80端口
server_name localhost; # 服务器名称为localhost
location / {
root /usr/share/nginx/html; # 设置根目录为/usr/share/nginx/html
index index.html; # 默认返回index.html文件
}
}
2 配置多个server块,多域名,多端口都大同小异
# 配置多个server块,分别监听不同的域名
server {
listen 80;
server_name girl.taobao.com;
location / {
root /usr/share/nginx/html/aa; #看
index index.html;
}
}
server {
listen 80;
server_name huwai.taobao.com;
location / {
root /usr/share/nginx/html/bb; #看
index index.html;
}
}
3 配置反向代理
# 配置Nginx作为反向代理,将请求转发到后端服务器
server {
listen 80;
server_name huwai.taobao.com;
location / {
proxy_pass http://localhost:9001; # 将请求转发到这里
proxy_set_header Host $host; # 设置请求头
proxy_set_header X-Real-IP $remote_addr; # 传递客户端真实IP
}
}
4 配置负载均衡
# 配置Nginx作为负载均衡器,将请求分发到多个后端服务器
upstream backend {
server 127.0.0.1:9001; # 后端服务器1
server 127.0.0.1:9002; # 后端服务器2
}
server {
listen 80;
server_name huwai.taobao.com;
location / {
proxy_pass http://backend; # 将请求转发到upstream定义的backend
}
}
5 配置自定义错误页面,此示例中的404.html和50x.html位于/usr/share/nginx/html/ 目录 下
# 配置Nginx自定义错误页面
server {
listen 80;
server_name huwai.taobao.com;
location / {
root /usr/share/nginx/html;
index index.html;
}
# 自定义404错误页面
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html; # 看
}
# 自定义50x错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html; # 看
}
}
6 配置限流
# 定义一个限流区域,每秒允许1个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
listen 80;
server_name huwai.taobao.com;
# 设置限流状态码为503,并通过error_page指向自定义页面
error_page 503 /50x.html;
location / {
limit_req zone=one burst=5 nodelay; # 应用限流,允许突发5个请求,立即拒绝超出burst限制的请求
root /usr/share/nginx/html;
index index.html;
# 当触发限流时返回503状态码
limit_req_status 503;
}
# 配置50x错误页面的位置
location = /50x.html {
root /usr/share/nginx/html;
}
}
7 负载均衡+限流
# 定义一个限流区域,每秒允许1个请求(您可以根据需要调整)
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
upstream backend {
server 127.0.0.1:9001; # 后端服务器1
server 127.0.0.1:9002; # 后端服务器2
}
server {
listen 80;
server_name huwai.taobao.com;
location / {
# 应用限流规则,使用之前定义的限流区域,并设置突发请求数量为5
limit_req zone=one burst=5 nodelay;
# 设置限流状态码为503,并通过error_page指向自定义页面
limit_req_status 503;
# 当触发限流时返回到自定义的503错误页面
error_page 503 /50x.html;
proxy_pass http://backend; # 将请求转发到upstream定义的backend
# 配置后端服务器响应头的调整等(可选)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 配置50x错误页面的位置
location = /50x.html {
root /usr/share/nginx/html; # 假设您的50x.html位于此目录下
}
}
8 配置Gzip压缩
# 配置Nginx启用Gzip压缩,减少传输数据量
server {
listen 80;
server_name huwai.taobao.com;
gzip on; # 启用Gzip压缩
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 指定压缩的文件类型
location / {
root /usr/share/nginx/html;
index index.html;
}
}
9 静态资源服务器综合配置,此示例中的404.html和50x.html位于/usr/share/nginx/html/ 目录 下
server {
listen 80;
server_name huwai.taobao.com;
# 设置根目录
root /usr/share/nginx/html;
# 启用Gzip压缩(适用于文本文件)
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 图片缓存优化
location ~* \.(jpg|jpeg|png|gif|ico|webp|svg)$ {
expires 30d; # 设置缓存时间为30天
add_header Cache-Control "public"; # 允许公共缓存
add_header Pragma "public"; # 支持旧版HTTP客户端
add_header Vary "Accept-Encoding"; # 根据Accept-Encoding头进行缓存
# 图片防盗链配置
valid_referers none blocked huwai.taobao.com *.huwai.taobao.com;
if ($invalid_referer) {
return 403; # 如果来源不在允许列表中,返回403 Forbidden
}
}
# HTML、CSS、JS缓存优化
location ~* \.(html|css|js)$ {
expires 7d; # 设置缓存时间为7天
add_header Cache-Control "public";
add_header Pragma "public";
add_header Vary "Accept-Encoding";
}
# 防止访问隐藏文件(如 .htaccess)
location ~ /\. {
deny all;
}
# 配置错误页面
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# 配置日志
access_log /var/log/nginx/static_access.log;
error_log /var/log/nginx/static_error.log;
}