Nginx常用配置
概述
gzip压缩
本文中使用nginx的版本:1.10.2
# 开启gzip
gzip on;
# 设置HTTP协议版本
gzip_http_version1.1;
# 压缩级别
gzip_comp_level2;
# 文件大于20k时才压缩
gzip_min_length20k;
# 设置要压缩的文件类型
gzip_typestext/plain text/css
o application/x-javascript text/xml
o application/xml application/xml+rss
o text/javascript application/javascript;
参数说明
gzip:打开或关闭gzip(on/off)
gzip_http_version:http协议版本
gzip_comp_level:压缩级别
gzip_types:需要压缩的文件版本
gzip_min_length:文件内容大于这个值时才会被压缩
缓存
客户端缓存:cache-control、expires
服务器缓存:last-modified、etag
开启浏览器缓存后,在缓存期内,访问同一资源不会再向服务器发送请求,而是直接从客户端缓存里面拉取资源。
开启服务器缓存后(假设客户端缓存已过期),客户端请求同一资源时,会向服务器发送一个请求,服务器判断资源是否更新,如果没有更新,则返回304告诉客户端从本地缓存里面读取资源。
服务器缓存默认是开启的。
# 设置客户端缓存 30s
add_header Cache-Control max-age=30;
# 设置客户端缓存30s
expires 30s;
# 关闭last-modified
add_header Last-Modified"";
# 关闭etag
etagoff;
include
每个服务应该单独配置,再通过include加载到主配置文件里面。
include /etc/nginx/conf.d/*.conf;
重定项 (rewrite)
永久重定项:301
临时重定项:302
# 301
rewrite ^/apm/(.*) /api/$1 permanent;
# 302
rewrite ^/apn/(.*) /api/$1 redirect;
# https 重定向到http
rewrite ^(.*)$ http://$host$1 permanent;
rewrite "^/(.*)$" http://blog.qianyu.cn/$1 break;
server
server
# 兼听的端口
listen 80;
# 服务域名
server_name www.webzhong.com;
# 请求成功的log日志
access_log /home/www/log/nginx/access.log main;
# 请求失败的log日志
error_log /home/www/log/nginx/error.log debug;
# 路由配置
location /{
root /home/www/blog/;
index index.html;
}
location ~* /api/ {
expire 30d;
proxy_pass http://45.77.1.2:8001;
add_header Content-Length 50;
}
负载均衡(LoadBalance)
# weight:权重,值越大越优先转发
# max_fails:最大失败次数,当达到这个次数,ng会把这个节点标记为不可用
# fail_timeout:超时时长
upstream lb-test {
oserver 127.0.0.1:8001 weight=1 max_fails=3 fail_timeout=10s;
oserver 127.0.0.1:8002 weight=1 max_fails=3 fail_timeout=10s;
}
server {
olisten 80;
oserver_name webzhong.com;
olocation / {
proxy_pass http://lb-test;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
以下是8001和8002端口的配置
server {
listen 8001;
server_name 127.0.0.1;
access_log /home/www/log/nginx/lb1-access.log main;
error_log /home/www/log/nginx/lb1-error.log debug;
location / {
proxy_pass http://45.77.1.1:8801;
}
olocation ~* /.well-known {
oroot /home/www/blog/;
o}
}
server {
listen 8002;
server_name 127.0.0.1;
access_log /home/www/log/nginx/lb1-access.log main;
error_log /home/www/log/nginx/lb1-error.log debug;
location / {
proxy_pass http://45.77.1.1:8801;
}
olocation ~* /.well-known {
oroot /home/www/blog/;
o}
}
Nginx常用变量
#是否有参数
$is_args
# 请求的uri
$request_uri
# 请求参数
$args
# 请求host
$host
# 客户端ip
$remote_addr
# 客户端端口
$remote_port