概述
反向代理
反向代理就是 在用户和目标服务器之间 , 用户通过访问反向代理 , 然后反向代理进行访问目标服务器 ,
用户其实无需知道目标服务器的地址 , 也无需在用户端做任何的设定. 反向代理主要作用是保护了目标服务器
正向代理
正向代理就是在用户和客户端和原始服务器(家里平时的路由器)之间 , 客户端向代理发sing一个请求,当用户发请求时明确告知了代理的真实的请求地址, 正向代理服务器保护了客户的信息 , 服务器无需知道客户是谁 ;
正向代理和反向代理机制的所有的代理机制的原理如下图
一般情况下正向代理和饭不想代理都会使用 正向代理进行实现网路通讯 , 反向代理进行服务器的数据的获取;
nginx (其他的错误可以查看闪耀的太阳)
nginx 在做每一次功能前都必须需要重启, 否则会不生效;
nginx是一个高性能的http和反向代理的服务器 ,nginx的并发的效率为5万/秒,实际的能力为3万/秒
主进程 : 主要提供反向代理服务
守护进程 : 防止进程意外关闭
启动nginx : satart nginx
重启nginx: nginx -s reload
停止nginx: nginx -s stop
在启动nginx 的时候必须先启动nginx, 在进行重启,这两步都不能少且顺序也不能改变
nginx的下载
nginx的默认占有端口为80;
nginx启动时要使用命令进行启动
反向代理的配置在conft的文件中进行配置
编辑 此内容就可以在网站输入 域名 : 端口号 就可以进行浏览
sd
将数据 转换成josn串
文件如果都放在一个文件夹之后那么在读取的时候会比较慢那么这时候就要放到下一级文件夹进行存储 可以以时间进行分割
图片的回显
需要访问nginx的服务器 , 同时需要配置hosts的文件和conft的文件 , 实现域名与IP地址的映射 ;
配置hosts 的文件
集群的配置`有3种 第一种就是均衡层略局势8091和8092 被访问的次数都差不多 , 第二种就是权重就是weight的值越大出现的次数就越多 ,
@Service
@PropertySource("classpath:/properties/image.properties")
public class FileServiceImpl implements FileService{
//为属性动态赋值 注解@Value
@Value("${image.localPathDir}")
private String localPathDir; // = "D:/JT_IMAGE";
@Value("${image.localUrlPath}")
private String localUrlPath; // = "http://image.jt.com";
//1.参数 ~~~已知条件
//2.干什么 ~~~ 实现文件上传
//3.返回值: void ImageVO 有效返回
/**
* 文件上传案例实现
* 1.如何保证前端是上传的数据是有效的!!
* 1.1 校验文件的名称检查是否为图片
* 1.2 校验是否为恶意程序.
* @param file
* @return
*/
@Override
public ImageVO upload(MultipartFile file) throws IOException {
//1.1校验是否为图片类型 abc.jpg ABC.JPG 文件大小写
String fileName = file.getOriginalFilename();
//将所有的文件名称转化为小写
fileName = fileName.toLowerCase();
if(!fileName.matches("^.+\.(jpg|png|gif)$")){
return null;
}
//1.2 校验图片类型是否为木马
try {
BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
if(width == 0 || height == 0 ){
return null;
}
}catch (Exception e){
return null;
}
//2. 目录结构
//2.1 实现分目录存储... 可以以时间维度进行分隔 /yyyy/MM/dd/
String datePath =
new SimpleDateFormat("/yyyy/MM/dd/").format(new Date());
//2.2 进行目录的拼接 "D:/JT_IMAGE/2021/11/11";
String localDir = localPathDir + datePath;
//2.3 需要创建目录
File dirFile = new File(localDir);
if(!dirFile.exists()){
dirFile.mkdirs();
}
//3.文件名称重复 采用UUID防止文件重名 uuid.jpg
String uuid = UUID.randomUUID().toString()
.replace("-", "");
//fileName = abc.jpg
String fileType =
fileName.substring(fileName.lastIndexOf("."));
String realFileName = uuid + fileType;
//c:jt_image/2021/11/11/uuid.jpg
String filePathAll = localDir + realFileName;
//实现文件上传
File realFile = new File(filePathAll);
file.transferTo(realFile);
//封装ImageVO对象 //2021/11/11/uuid.jpg 图片路径
String virtualPath = datePath + realFileName;
//封装虚拟URl地址 http://image.jt.com/2021/11/11/uuid.jpg
String urlPath = localUrlPath + virtualPath;
return new ImageVO(virtualPath,urlPath,realFileName);
}
//如何实现文件删除?? virtualPath: 2021/11/11/uuid.jpg
@Override
public void fileRemove(String virtualPath) {
String filePath = localPathDir + virtualPath;
File file = new File(filePath);
//删除文件
file.delete();
}
}
第三种就是iphash就是加入ip_hash就会一直不变的访问某一个服务器直到这个服务器坏掉会自动访问另外正常的服务器
在java中格式化时间的就是将时间当做一个类进行处理(可以有年,月,日,时,分,秒)
@RestController
@CrossOrigin
@RequestMapping("/file")
public class FileController {
@Autowired
private FileService fileService;
@PostMapping("/upload")
public SysResult upload(MultipartFile file) throws IOException {
ImageVO imageVO = fileService.upload(file);
if(imageVO == null){
return SysResult.fail();
}
return SysResult.success(imageVO);
}
//实现文件的删除功能
//URL: /file/deleteFile
@DeleteMapping("/deleteFile")
public SysResult fileRemove(String virtualPath){
fileService.fileRemove(virtualPath);
return SysResult.success();
}
最后
以上就是烂漫花生为你收集整理的2021-5-21---图片的 读取 反向代理 正向代理反向代理正向代理nginx (其他的错误可以查看闪耀的太阳)的全部内容,希望文章能够帮你解决2021-5-21---图片的 读取 反向代理 正向代理反向代理正向代理nginx (其他的错误可以查看闪耀的太阳)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复