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的后端服务器/服务。
相关推荐
参宿736 分钟前
electron之win/mac通知免打扰
java·前端·electron
石小石Orz1 小时前
性能提升60%:前端性能优化终极指南
前端·性能优化
夏日不想说话1 小时前
API请求乱序?深入解析 JS 竞态问题
前端·javascript·面试
zhaoolee1 小时前
通过rss订阅小红书,程序员将小红书同步到自己的github主页
前端
掘金安东尼1 小时前
我们让 JSON.stringify 的速度提升了两倍以上
前端·javascript·面试
Cheney95011 小时前
TypeScript 中,! 是 非空断言操作符
前端·vue.js·typescript
sp422 小时前
老旧前端项目如何升级工程化的项目
前端
青山Coding2 小时前
Cesium应用(二):基于heatmap.js 的全球气象可视化实现方案
前端·gis·cesium
羊锦磊2 小时前
[ CSS 前端 ] 网页内容的修饰
java·前端·css
浊浪载清辉2 小时前
基于HTML5与Tailwind CSS的现代运势抽签系统技术解析
前端·css·html5·随机运签·样式技巧