Nginx高级配置

重定向配置

kotlin 复制代码
location / { 
  return 404;                       // 直接返回状态码
}
location / { 
  return 404 "pages not found";     // 返回状态码 + 一段文本
}
location / { 
  return 302 /blog;                 // 返回状态码 + 重定向地址
}
location / { 
  return https://www.mingongge.com; // 返回重定向地址
}
bash 复制代码
server { 
  listen 80;
  server_name www.mingongge.com;
  return 301 http://mingongge.com$request_uri;
}

server {
  listen 80; 
  server_name www.mingongge.com;
  location /cn-url {    
    return 301 http://mingongge.com.cn;    
  }
}

server{  
  listen 80;  
  server_name mingongge.com; # 要在本地hosts文件进行配置  
  root html;  

  location /search {   
    rewrite ^/(.*) https://www.mingongge.com redirect;  
  }    

  location /images {   
    rewrite /images/(.*) /pics/$1;  
  }    

  location /pics {   
    rewrite /pics/(.*) /photos/$1;  
  }    

  location /photos {    }
}

设置缓冲区容量上限

ini 复制代码
client_body_buffer_size 1k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k; 
// 设置后,不管多少 HTTP 请求都不会使服务器系统的缓冲区溢出了
  1. client_body_buffer_size 1k

    • 设置客户端请求体的缓冲区大小。
  2. client_header_buffer_size 1k

    • 设置客户端请求头的缓冲区大小。
  3. client_max_body_size 1k

    • 设置客户端请求体的最大允许大小。
  4. large_client_header_buffers 2 1k

    • 允许Nginx在遇到大请求头时,可以使用21k的缓冲区来接收和处理请求头信息。

限制最大连接数

ini 复制代码
limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 1;
  1. limit_conn_zone $binary_remote_addr zone=addr:5m

    • 创建了一个名为addr的连接限制区域,并设置了区域的总大小为5mb
    • $binary_remote_addr变量是客户端的IP地址。
    • 每个IP地址最多只能使用5mb内存来存储连接状态信息。
  2. limit_conn addr 1

    • Nginxaddr区域中,每个IP地址的并发连接数限制为1

Gzip压缩

arduino 复制代码
gzip_types                          // 压缩的文件类型 
text/plain 
text/css  
application/json  
application/x-javascript  
text/xml 
application/xml 
application/xml+rss  
text/javascriptgzip on;             // 采用 gzip 压缩的形式发送数据
gzip_disable "msie6"                // 为指定的客户端禁用 gzip 功能
gzip_static;                        // 压缩前查找是否有预先 gzip 处理过的资源
gzip_proxied any;                   // 允许或者禁止压缩基于请求和响应的响应流
gzip_min_length  1000;              // 设置对数据启用压缩的最少字节数
gzip_comp_level 6;                  // 设置数据的压缩等级

缓存配置

scss 复制代码
open_file_cache
// 指定缓存最大数目以及缓存的时间
open_file_cache_valid
// 在 open_file_cache 中指定检测正确信息的间隔时间
open_file_cache_min_uses   
// 定义了 open_file_cache 中指令参数不活动时间期间里最小的文件数
open_file_cache_errors     
// 指定了当搜索一个文件时是否缓存错误信息

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {         // 指定缓存文件的类型        
  expires 3650d;                                     // 指定缓存时间        
}        

location ~ .*.(js|css)?$ {        
  expires 3d;                             
}

SSL证书配置及跳转HTTPS配置

ini 复制代码
server {      
  listen 192.168.1.250:443 ssl;      
  server_tokens off;      
  server_name mingonggex.com www.mingonggex.com;      
  root /var/www/mingonggex.com/public_html;      
  ssl_certificate /etc/nginx/sites-enabled/certs/mingongge.crt;      
  ssl_certificate_key /etc/nginx/sites-enabled/certs/mingongge.key;      
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}

// HTTP 到 HTTPS 永久重定向
server {  
  listen 80;  
  server_name mingongge.com; 
  return 301 https://$server_name$request_uri;
}
  1. listen 192.168.1.250:443 ssl

    • Nginx服务器监听IP地址来自192.168.1.250443端口的传入连接,启用SSL/TLS
  2. server_tokens off

    • 控制Nginx在响应头中是否发送服务器版本信息。
  3. server_name mingonggex.com www.mingonggex.com

    • 服务器将响应mingonggex.comwww.mingonggex.com的请求,这两个域名指向同一个网站。
  4. root /var/www/mingonggex.com/public_html

    • 指定服务器上网站内容的根目录。
  5. ssl_certificate /etc/nginx/sites-enabled/certs/mingongge.crt

    • 用于SSL/TLS加密的证书文件的路径。
    • mingongge.crt服务器的SSL证书文件。
  6. ssl_certificate_key /etc/nginx/sites-enabled/certs/mingongge.key

    • 指定了SSL/TLS加密的私钥文件的路径。
  7. ssl_protocols TLSv1 TLSv1.1 TLSv1.2

    • 服务器支持的SSL/TLS协议版本。

流量镜像功能

ini 复制代码
location / {    
  mirror /mirror;    
  proxy_pass http://backend;
}

location = /mirror {    
  internal;    
  proxy_pass http://test_backend$request_uri;
}
  1. mirror /mirror

    • 启用一个名为mirror的镜像功能,允许Nginx将所有到/的请求赋值一份到/mirror
  2. proxy_pass http://backend

    • 将所有到/的请求转发到名为backend的服务器/服务。
    • Nginx充当一个反向代理,将请求传递给后端服务器,将响应返回给客户端。
  3. internal

    • 这个location块只能被内部请求访问,不能被外部网络直接访问。
  4. proxy_pass http://test_backend$request_uri

    • 将到/mirror的请求转发到test_backend服务器/服务,并保持原始的请求URI
    • $request_uri变量包含了客户端请求的原始URI
  5. 综上功能

    • 处理所有到/请求,镜像到/mirror,同时代理到backend服务器。
    • 内部处理所有到/mirror的请求,并代理到test_backend服务器,保持原始请求的URI

限流功能

ini 复制代码
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

server {    
  location /login/ {        
    limit_req zone=mylimit;        
    proxy_pass http://my_upstream;    
  }
}
  1. limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s

    • 创建一个名为mylimit的请求限制区域,用于跟踪和限制每个IP地址的请求速率。
    • 10m指定存储每个IP地址状态信息的共享内存区域大小。
    • rate=10r/s每个IP地址每秒最多允许10个请求。
  2. limit_req zone=mylimit

    • 设置对mylimit区域的请求限制。
    • 每个IP地址对/login/路径的请求将受到每秒10个请求的速率限制。
  3. proxy_pass http://my_upstream

    • /login路径的请求被代理到my_upstream的后端服务器/服务。
相关推荐
猫头虎2 分钟前
什么是 npm、Yarn、pnpm? 有什么区别? 分别适应什么场景?
前端·python·scrapy·arcgis·npm·beautifulsoup·pip
迷曳11 分钟前
27、鸿蒙Harmony Next开发:ArkTS并发(Promise和async/await和多线程并发TaskPool和Worker的使用)
前端·华为·多线程·harmonyos
安心不心安1 小时前
React hooks——useReducer
前端·javascript·react.js
像风一样自由20201 小时前
原生前端JavaScript/CSS与现代框架(Vue、React)的联系与区别(详细版)
前端·javascript·css
啃火龙果的兔子1 小时前
react19+nextjs+antd切换主题颜色
前端·javascript·react.js
paid槮1 小时前
HTML5如何创建容器
前端·html·html5
小飞悟2 小时前
一打开文章就弹登录框?我忍不了了!
前端·设计模式
烛阴2 小时前
Python模块热重载黑科技:告别重启,代码更新如丝般顺滑!
前端·python
吉吉613 小时前
Xss-labs攻关1-8
前端·xss
拾光拾趣录3 小时前
HTML行内元素与块级元素
前端·css·html