nginx配置
最近做前后端分离的项目,用nginx代理后台服务。
一下是nginx服务例子:
server {
listen 8800;
server_name _;
location ~* \.(gif|jpg|jpeg|png|css|js|ico|html|eot|ttf|otf|woff|woff2|svg|less)$ {
root /Users/payplus/Desktop/workspace/repository/portal-static/build;
}
location /{
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://1**.1**.***.183:8061; // 代理的地址
}
expires -1;
charset utf-8;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
关于nginx的server选项和location选项,可以查看nginx的配置选项。今天这里要说的是nginx的两点配置。
配置选项:client_max_body_size 100m; 配置请求体缓存区大小, 不配的话
client_body_temp_path /usr/local/etc/nginx/client_temp 3 2; 设置临时文件存放路径。只有当上传的请求体超出缓存区大小时,才会写到临时文件中
client_max_body_size配置选项可以不完全的理解为带宽,是对于传输最大的值得设置。
client_body_temp_path用于有上传图片需求时候的设置选项。当初发现这个问题的时候是因为本地进行代理后台服务器地址时,不可以上传图片,控制台报:500 internal server error,当初初步认为是由于传输带宽的问题,所以就设置了client_max_body_size选项,发现不起作用。后来发现由所代理的服务器直接进行上传图片的操作的时候功能完好,所以认为是nginx相配置出了错。首先对已设置选项进行了排查,并无阻碍上传图片的限制。最终设置了我们解决问题的属性:client_body_temp_path得以解决问题。其作用其实就是在你配置的路径下生成了相关的文件夹用来储存图片文件。问题得以解决。
第二点是关于nginx的缓存调优:
expires缓存调优
location ~* \.(ico|jpe?g|gif|png|bmp|swf|flv)$ {
expires 30d;
#log_not_found off;
access_log off;
}
location ~* \.(js|css)$ {
expires 7d;
log_not_found off;
access_log off;
}
这个属性配置上就好啦。