c语言编程笔录

首页 >   > 笔记大全

笔记大全

Nginx如何部署SpringBoot项目

更新时间:2023-11-07

1. Nginx的作用

Nginx作为一款轻量级、高效的HTTP服务器,在Web应用中有着广泛的应用,尤其是在分布式架构下,常常被用作反向代理服务器。在部署SpringBoot项目时,使用Nginx作为反向代理可以带来更高的请求处理效率和更好的可维护性。

#Nginx的反向代理配置
location / {
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

2. 部署SpringBoot项目

在部署SpringBoot项目时,可以使用Nginx将请求转发至SpringBoot应用程序的内嵌Tomcat容器,这样就可以充分利用Nginx所具备的高效处理请求的优势。另外,也可以通过Nginx反向代理到单独的Tomcat服务器上。

#SpringBoot应用的启动类代码示例
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
#Nginx反向代理配置
location / {
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

3. Nginx和SpringBoot共同解决跨域问题

由于跨域问题,许多Web应用需要使用一些技术手段来解决跨域的问题。常用的跨域解决方案有JSONP、CORS等。在Nginx和SpringBoot的配合下,可以轻松地解决跨域问题。

#添加CORS配置
location / {
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'Origin, X-Requested-With, Content-Type, Accept';
    add_header Access-Control-Allow-Credentials true;
    if ($request_method = 'OPTIONS') {
        return 204;
    }
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#在SpringBoot应用中添加CORS配置
@Configuration
public class CorsConfig {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedOrigins("*")
                        .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                        .allowedHeaders("Content-Type", "Authorization")
                        .allowCredentials(true)
                        .maxAge(3600);
            }
        };
    }
}

4. 总结

使用Nginx和SpringBoot可以实现高效的Web应用程序部署和跨域解决方案。Nginx作为反向代理服务器,可以大大提高请求处理能力和可维护性,而SpringBoot则提供了方便快捷的Web应用开发环境和自带的容器。两者的配合使用可以带来更好的用户体验和更高的系统性能。