重定向配置
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 请求都不会使服务器系统的缓冲区溢出了
-
client_body_buffer_size 1k
- 设置客户端请求体的缓冲区大小。
-
client_header_buffer_size 1k
- 设置客户端请求头的缓冲区大小。
-
client_max_body_size 1k
- 设置客户端请求体的最大允许大小。
-
large_client_header_buffers 2 1k
- 允许
Nginx
在遇到大请求头时,可以使用2
个1k
的缓冲区来接收和处理请求头信息。
- 允许
限制最大连接数
ini
limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 1;
-
limit_conn_zone $binary_remote_addr zone=addr:5m
- 创建了一个名为
addr
的连接限制区域,并设置了区域的总大小为5mb
。 $binary_remote_addr
变量是客户端的IP
地址。- 每个
IP
地址最多只能使用5mb
内存来存储连接状态信息。
- 创建了一个名为
-
limit_conn addr 1
Nginx
在addr
区域中,每个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;
}
-
listen 192.168.1.250:443 ssl
Nginx
服务器监听IP
地址来自192.168.1.250
的443
端口的传入连接,启用SSL/TLS
。
-
server_tokens off
- 控制
Nginx
在响应头中是否发送服务器版本信息。
- 控制
-
server_name mingonggex.com www.mingonggex.com
- 服务器将响应
mingonggex.com
和www.mingonggex.com
的请求,这两个域名指向同一个网站。
- 服务器将响应
-
root /var/www/mingonggex.com/public_html
- 指定服务器上网站内容的根目录。
-
ssl_certificate /etc/nginx/sites-enabled/certs/mingongge.crt
- 用于
SSL/TLS
加密的证书文件的路径。 mingongge.crt
服务器的SSL
证书文件。
- 用于
-
ssl_certificate_key /etc/nginx/sites-enabled/certs/mingongge.key
- 指定了
SSL/TLS
加密的私钥文件的路径。
- 指定了
-
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;
}
-
mirror /mirror
- 启用一个名为
mirror
的镜像功能,允许Nginx
将所有到/
的请求赋值一份到/mirror
。
- 启用一个名为
-
proxy_pass http://backend
- 将所有到
/
的请求转发到名为backend
的服务器/服务。 Nginx
充当一个反向代理,将请求传递给后端服务器,将响应返回给客户端。
- 将所有到
-
internal
- 这个
location
块只能被内部请求访问,不能被外部网络直接访问。
- 这个
-
proxy_pass http://test_backend$request_uri
- 将到
/mirror
的请求转发到test_backend
服务器/服务,并保持原始的请求URI
。 $request_uri
变量包含了客户端请求的原始URI
。
- 将到
-
综上功能
- 处理所有到
/
请求,镜像到/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;
}
}
-
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s
- 创建一个名为
mylimit
的请求限制区域,用于跟踪和限制每个IP
地址的请求速率。 10m
指定存储每个IP
地址状态信息的共享内存区域大小。rate=10r/s
每个IP
地址每秒最多允许10
个请求。
- 创建一个名为
-
limit_req zone=mylimit
- 设置对
mylimit
区域的请求限制。 - 每个
IP
地址对/login/
路径的请求将受到每秒10
个请求的速率限制。
- 设置对
-
proxy_pass http://my_upstream
/login
路径的请求被代理到my_upstream
的后端服务器/服务。