nginx的一些使用
nginx开启和关闭
参考文章:
https://blog.csdn.net/qq_20236937/article/details/131654981?ops_request_misc=&request_id=&biz_id=102&utm_term=nignx%E5%A6%82%E4%BD%95%E5%85%B3%E9%97%AD&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-131654981.142^v100^pc_search_result_base8&spm=1018.2226.3001.4187
nginx: 反向代理,就是将前端发送的动态请求有nginx转发到后端服务器。
浏览器请求 ——> nginx ——> 后端服务
为什么要反向代理?
个人理解:
前端的请求可以直接发送到后端,请求后端的服务。
但这样做有一些弊端:
1. 暴露了后端服务地址。
2. 不好做负载均衡。
这些弊端恰好是使用nginx的好处。
使用nginx的好处:
1. 提高访问速度,nginx可以做一些缓存。nginx可以快速地提供静态文件(图片、css等)的服务,通过内置的http缓存机制显著减少对后端服务的请求。
2. 负载均衡。将请求有效地转发多个后端服务器。当你有多个后端服务器时,可以按照一定的策略,将请求发送给相应的服务器,做到负载均衡。
3. 保证后端服务的安全,避免被网络攻击。
nginx是一部分服务的抽取封装。当一个系统的用户足够多之后,即使没有nginx,我们在前端发送请求时,也会考虑服务器的负载均衡和其他问题。如果在前端代码中直接做这件事,那么几乎要对每个请求做相同的处理,增加大量重复代码。
那么可以利用AOP的思想,将代理服务写成一个切面,减少重复代码,同时可以增加代理的扩展性。
swagger
接口测试工具
Knife4j 是一款基于 Swagger 的API文档生成和管理工具,它提供了一些额外的功能和优化,以增强 Swagger 原生功能的体验。
使用:
引入依赖
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
配置类
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
// @Autowired
// private JwtTokenAdminInterceptor jwtTokenAdminInterceptor;
/**
* 注册自定义拦截器
*
* @param registry
*/
/**
protected void addInterceptors(InterceptorRegistry registry) {
log.info("开始注册自定义拦截器...");
registry.addInterceptor(jwtTokenAdminInterceptor)
.addPathPatterns("/admin/**")
.excludePathPatterns("/admin/employee/login");
}
*/
/**
* 通过knife4j生成接口文档
* @return
*/
@Bean
public Docket docket() {
ApiInfo apiInfo = new ApiInfoBuilder()
.title("项目接口文档")
.version("2.0")
.description("项目接口文档")
.build();
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo)
.select()
.apis(RequestHandlerSelectors.basePackage("改成自己的"))
.paths(PathSelectors.any())
.build();
return docket;
}
/**
* 设置静态资源映射
* @param registry
*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}