1.nginx作为web代理服务的优化
(1)内核优化,配置senfile
Syntax: sendfile on | off
Default:
Context:http、server、location、if in location
(2)配置tcp_nopush,列如,送快递,十个包裹,一次一次的送和十个一起送,提高网络传输的效率,但是这个配置必须要sendfile生效的情况下才可以用;
Syntax: tcp_nopush on | off
Default: tcp_nopush off
Context:http、server、location
(3)压缩gzip
Syntax: gzip on | off
Default: gzip off
Context:http、server、location、if in location
gzip_comp_level压缩比
Syntax: gzip_comp_level level;
Default: gzip_comp_level 1;
Context:http、server、location
gzip_http_version压缩http协议版本,现在一般都是1.1
Syntax: gzip_http_version 1.0 | 1.1
Default: gzip_http_version 1.1 ;
Context:http、server、location
(4)压缩拓展:http_gzip_static_module 预读gzip功能
压缩配置如图
2.nginx缓存
浏览器的缓存
(1)http定义的缓存机制(如:expires ;Cache-control等)
(2)浏览器会先请求浏览器的临时目录,没有资源在访问服务端;
(3)当地二此请求时,浏览器端是有缓存的,而这时,他就会去校验是否过期,如果没有,就直接显示,如果过期,再去服务端请求。
(4)校验过期的机制:
第一:Expires(1.0协议版本)和Cache-Control(1.1协议版本)(max-age) ,max-age定义了缓存的周期,如果超期了,就是缓存失效了。
第二:协议中的Etag头信息校验
第三:Last-Modified头信息校验,last-modified后面跟了一个时间,用来和服务器端文件的跟新,如果服务器端文件的更新时间在这个时间之内,则直接返回,去过不在,则跟新。
相当于是什么呢,就是说在缓存过期的情况下(浏览器端还是有缓存的),如果使用last-modified在服务器端验证了此文件并没有更新过(也就是说虽然缓存超期了,但是文件依旧可以用),那么就直接使用浏览器端的缓存。
nginx的缓存过期设置
也就是在响应投中配置 expires 和Cache-control头;
具体配置语法
Syntax: expires [modified] time;
expires epoch |max |off;
Default: expires off;
Context:http、server、location,if in location
跨域访问
add_header配置语法 主要是配置Access-Control-Allow-Orgin头
Syntax: add_header name value [always]
Default: ---;
Context:http、server、location,if in location
3.防盗链
防止资源被盗用
(1) 区别哪些请求时正常的用户的请求;
(2)基于http_refer
4 代理
(1)正向代理和反向代理;
正向代理代理的对象是客户端;
反向代理代理的对象是服务端
(2)配置语法
5.nginx的跨域配置
server {
listen 8080;
server_name localhost;
#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
##允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
##允许请求的方法,比如 GET/POST/PUT/DELETE
add_header 'Access-Control-Allow-Methods' *;
##允许请求的header
add_header 'Access-Control-Allow-Headers' *;
#charset koi8-r;
#access_log logs/host.access.log main;
location /foodie-shop{
root /opt/imooc/dist;
index index.html index.htm;
}
location /foodie-center{
root /opt/imooc/dist;
index index.html index.htm;
}
location /dxxxgl/back/bjxx/dblsBjxx {
proxy_pass http://192.168.2.114:8881/dxxxgl/back/bjxx/dblsBjxx;
}
}
6 .Nginx 防盗链配置支持
#对源站点验证
valid_referers *.imooc.com;
#非法引入会进入下方判断
if ($invalid_referer) {
return 404;
}
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
7.nginx代理转发token
加上这一串
server
{
underscores_in_headers on;
}
1.nginx和php默认不支持上传过大的文件
假如我们要求上传的文件大小为20M,默认配置就不允许上传了。
下面我们更改nginx和php配置,设定 上传的限制为20M
Nginx配置更改
如果上传文件时超过了nginx限制,就会返回一个“413 Request Entity Too Large”的错误
我们只要更改nginx的配置文件“nginx.conf”即可
在http{}中添加一个client_max_body_size 20m;配置项;
修改完之后重启nginx或reload配置
nginx配置隐藏版本号
server_tokens off;