最近一直忙着刷面试题,一直都想去学习的,Nginx服务,还有node,耽误了好久。 最近面试题感觉都差不多了,可以一边记,一边学习新的东西了。 以后想养成一个习惯,对一些基础知识的回顾,还有就是对自己写过代码的重新省视
1. Nginx的优势代理服务器
就是客户端直接给目标服务器发送请求,会产生跨域
客户端在发送请求时,首先不会向目标主机地址发送,而是发送给代理服务器,代理服务接收到客户端请求之后,再向主机发出,并接收目标主机返回的数据,存放在代理服务器的硬盘中,再发送给客户端。
目标主机返回的数据,会存放在代理服务器的硬盘中,客户端访问相同站点的数据时,会直接从代理服务器的硬盘中读取,起到了一个缓存数据的作用,这其实就是协商缓存。
由于所有的客户端请求都会经过代理服务器,可以在代理服务器上设限制,过滤某些不安全的信息 比如 csrf攻击,我们判断请求的地址,是不是我们客户端的ip地址 请求头字段 referer
访问外网
总结: 正向代理的是客户端,反向代理的是服务端
2. linux服务器 安装 Nginx
快速安装
yum install nginx nginx -v 查看版本号 rpm -ql nginx 查看Nginx安装的目录 cd /etc/nginx 跳转到Nginx 安装目录下 systemctl enable nginx 设置Nginx的开机启动 systemctl start nginx 启动nginx 跳转到 cd /usr/sbin 然后 ./nginx -s reload 重启nginx 跳转到 cd /usr/local 执行 mkdir home 创建home 目录 把 静态文件 的代码放入到 创建的home 目录下 执行 vim /etc/nginx/nginx.conf 打开 nginx的配置文件 如下配置之后 执行 cd /usr/sbin 然后 ./nginx -s reload 重启nginx 接下来配置跨域 劫持 /api 的路由,代理到 下面这个域名 跳转到 cd /usr/sbin 然后 ./nginx -s reload 重启nginx
nginx开启Gzip压缩
cd /etc/nginx/conf.d/ touch gzip.conf vim gzip.conf 打开了我们创建的文件
这个文件里面输入如下代码,然后重启就可以开启gzip压缩了
#开启和关闭gzip模式
gzip on|off;
#gizp压缩起点,文件大于1k才进行压缩
gzip_min_length 1k;
# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
gzip_comp_level 1;
# 进行压缩的文件类型。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript ;
#nginx对于静态文件的处理模块,开启后会寻找以.gz结尾的文件,直接返回,不会占用cpu进行压缩,如果找不到则不进行压缩
gzip_static on|off
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
# 设置压缩所需要的缓冲区大小,以4k为单位,如果文件为7k则申请2*4k的缓冲区
gzip_buffers 2 4k;
# 设置gzip压缩针对的HTTP协议版本
gzip_http_version 1.1;
nginx防止csrf攻击
valid_referers none referers字段值为空可以访问 valid_referers blocked referers字段值不带有 http 或者 https 可以访问 valid_referers 127.0.0.1 127.0.0.1:80; referers字段值为127.0.0.1 127.0.0.1:80;可以访问 valid_referers none blocked 127.0.0.1 127.0.0.1:80; 这一段代码就是三者任意符合,就可以
$invalid_referer 意思是: referers 值不等于 127.0.0.1 127.0.0.1:80; 就返回403(没有访问权限)
valid_referers 127.0.0.1 127.0.0.1:80;
if ($invalid_referer) {
return 403;
}
location /api {
valid_referers none blocked 127.0.0.1 127.0.0.1:80;
if ($invalid_referer) {
return 403;
}
tip : nginx的防止csrf攻击,不是最完美的,可以采用短信验证码,token,cookie设置 SameASite,禁止跨域传递cookie等方法。
|