全局变量
-
$http_x_forwarded_for
用来记录 ip 地址, 区别代理服务器
-
$remote_user
用来记录远程客户端用户名称
-
$time_local
用来记录访问时间和时区
-
$request
用来记录请求的URL 与 HTTP 协议
-
$status
用于记录请求的状态, 例如成功时状态为 200, 页面找不到时 404
-
$body_bytes_send
用于记录发送给客户端的文件主体内容大小
-
$http_referer
用来记录是从那个页面链接访问过来的
-
$http_user_agent
用于记录客户端浏览器的相关信息
-
query_string
此变量与请求行中的参数相等
-
$content_length
请求行中的 - Content-Type
-
$remote_addr
客户端 ip
-
$remote_port
客户端 port
-
$request_filename
当前请求的文件的路径名,由root或alias和URI request组合而成
-
$limit_rate
允许限制的连接速率
-
$request_uri
含有参数的完整的初始URI
-
$uri
等同于当前request中的URI,可不同于初始值,例如内部重定向时或使用index
Nginx 设置反向代理
location ^~ /api/ {
proxy_pass http://127.0.0.1:7071;
proxy_redirect off;
# 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
前端使用 nginx 部署 React Spa (Browser History) 的特殊配置
location / {
root: path;
index: index.html;
try_files try_files $uri /index.html;
}
nginx 配置 https 和 开启 h2
server {
listen 443 ssl http2;
server_name 106.53.94.167;
root /home/ubuntu/workspace/mpa-dance-admin/dist;
charset utf-8;
ssl_certificate hxedu.top.crt;
ssl_certificate_key hxedu.top.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
<!-- 具体的配置 -->
}
}
nginx 开启 gzip
##
# Gzip Settings
##
gzip on;
gzip_vary on;
gzip_min_length 1k;
# gzip_proxied any;
gzip_comp_level 2;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
gzip_types text/csv text/xml text/css text/plain text/javascript application/javascript application/x-javascript application/json application/xml;
nginx 日志配置
可以给每一个 HTTP, Server, Location 定义一个日志
-
open_log_file_cache
对于每一条日志记录, 日志文件都将先打开文件, 再写入日志记录, 然后马上关闭, 为了提高包含的日志变量的日志文件存放路径的性能, 可以使用 - open_log_file_cache 指令来设置; 格式如下
open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time] | off
- off
- max:
设置缓存中的最大文件描述符数量
- inactive:
设置一个时间, 如果在设置的时间内没有使用此文件描述符, 则自动删除此描述符
- min_uses:
在参数 inactive 指定的时间范围内, 如果日志文件超过被使用的次数, 则该日志文件的描述符计入缓存, 默认为 10s
- valid: 设置多长时间检查一次, 看日志文件路径与文件名是否任然存在, 默认是 60s
eg: open_log_file_cache max=1000 inactive=20s min_users=2 valid=1m
-
log_format
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
-
access_log
访问日志
Nginx 的浏览器本地缓存设置
http {......} 中间配置, 启动压缩
location ~ .*\.(gif|jpg|png)$ {
expires 30d
}
Nginx 设置限速 limit_rate
-
限制IP的连接和并发
http {} 作用域配置
- limit_req_zone
用来限制单位时间内的请求数
- limit_req_conn
用来限制同一时间连接数
- limit_req_zone
location /download {
limit_rate 256k;
proxy_pass http://1.2.3.4
}
location /movie {
limit_rate_after 10m;
limit_rate 100k;
if ($http_user_agent ~ Google|baidu) {
limit_rate 20k;
}
}
网友评论