Nginx部署SpringBoot项目的实现

Nginx是一款高性能的Web服务器和反向代理服务器,目前被广泛应用于各种Web应用中。在Spring Boot应用的部署过程中,Nginx可用于反向代理静态资源,同时将请求转发到Spring Boot应用程序。本文将详细演示如何在Nginx中部署Spring Boot项目。

前置需求

在开始本攻略前,需要满足以下要求:

  • 已经安装了Spring Boot。
  • 已经安装了Nginx 1.9.0或以上版本。
  • 已经获得了域名和SSL证书。

步骤一:配置Spring Boot

  1. 打开Spring Boot项目的application.properties文件,增加以下配置:
server.port=8080
server.tomcat.remote_ip_header=x-forwarded-for
server.tomcat.protocol_header=x-forwarded-proto
  • server.port可以根据具体的需求设置。
  • server.tomcat.remote_ip_headerserver.tomcat.protocol_header会在后面的Nginx配置中使用,在这里配置可以确保反向代理对IP和协议的处理正确。

  • 构建并运行Spring Boot应用程序:

./mvnw spring-boot:run

现在应用程序已经在端口8080上启动了。可以访问http://localhost:8080/,检查应用程序是否正常运行。

步骤二:Nginx反向代理

  1. 在Nginx配置文件nginx.conf中增加以下配置:
server {
    listen 443 ssl;
    server_name YOUR_DOMAIN_NAME;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}
  • YOUR_DOMAIN_NAME是指使用的域名。
  • fullchain.pemprivkey.pem是SSL证书文件的路径。
  • proxy_pass表示将所有请求转发到Spring Boot应用程序的地址。
  • proxy_set_header设置请求头,确保应用程序正确处理反向代理信息。

  • 输入以下命令验证Nginx配置文件是否正确:

sudo nginx -t

如果输出信息中没有错误,则表明配置文件正确。

  1. 重新启动Nginx服务器使配置生效:
sudo systemctl restart nginx

现在应用程序已经可以通过Nginx进行反向代理。访问https://YOUR_DOMAIN_NAME/,应用程序应该可以正常访问。

示例一:将静态资源部署在Nginx中

有些静态资源比如HTML、CSS、JS等,可以直接部署在Nginx服务器中提高访问速度。在这个示例中,我们将静态资源部署在Nginx中,同时将请求转发到Spring Boot应用程序。

  1. 在Spring Boot项目的src/main/resources/static目录下创建index.html文件。

  2. 在Nginx配置文件nginx.conf中增加以下配置:

server {
    listen 443 ssl;
    server_name YOUR_DOMAIN_NAME;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }

    location /static/ {
        root /path/to/static/;
        expires 7d;
    }
}
  • location /static/表示Nginx将处理所有以/static/开头的请求。
  • root是静态资源的路径。
  • expires表示将缓存静态资源7天。

  • 在Nginx静态资源目录中创建一个static目录,并将index.html文件放在static目录中。

  • 重新启动Nginx服务器。

现在可以通过访问https://YOUR_DOMAIN_NAME/static/index.html来访问静态资源。同时,Spring Boot应用程序也可以通过https://YOUR_DOMAIN_NAME来访问。

示例二:使用Docker部署Spring Boot项目

使用Docker可以提高应用程序的可移植性和伸缩性。在这个示例中,我们将使用Docker部署Spring Boot项目。

  1. 在Spring Boot项目的根目录下创建Dockerfile文件。
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
  • openjdk:8-jdk-alpine是使用的Java镜像。
  • ADD指令将target目录下的所有jar包添加到镜像中。
  • EXPOSE指令暴露应用程序的端口。
  • ENTRYPOINT指令设置启动应用程序的命令。

  • 在命令行中输入以下命令构建Docker镜像:

docker build -t YOUR_IMAGE_NAME .
  • YOUR_IMAGE_NAME是指镜像的名称。

  • 在命令行中输入以下命令运行Docker容器:

docker run -d -p 8080:8080 -t YOUR_IMAGE_NAME
  • -d参数表示在后台运行容器。
  • -p参数将Docker容器的8080端口映射到主机的8080端口。
  • -t参数指定镜像的名称。

现在可以使用https://YOUR_DOMAIN_NAME:8080来访问应用程序。

结论

使用Nginx反向代理Spring Boot项目可以提高应用程序的稳定性和安全性,同时使得应用程序更容易扩展和管理。在本文中,我们详细介绍了如何在Nginx中部署Spring Boot项目,同时提供了两个示例,包括将静态资源部署在Nginx中和使用Docker部署Spring Boot项目。希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx部署SpringBoot项目的实现 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Nginx正则表达式相关的参数和规则介绍

    Nginx作为一个高性能的Web服务器和反向代理服务器,在处理请求时经常需要用到正则表达式来匹配URL或HTTP请求头等信息。本文将详细讲解Nginx正则表达式相关的参数和规则,希望对大家能有所帮助。 Nginx正则表达式相关的参数和规则介绍 1. Nginx正则表达式语法 Nginx使用PCRE模块作为正则表达式引擎,支持大部分Perl语言的正则表达式语法…

    Nginx 2023年5月16日
    00
  • 怎么通过Nginx定义Header头信息

    这篇文章主要介绍了怎么通过Nginx定义Header头信息的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么通过Nginx定义Header头信息文章都会有所收获,下面我们一起来看看吧。 通过修改nginx的conf文件,轻松达到自定义HTTP Header的目的。 Nginx 使用 ngx_headers_more 模块来增加、…

    Nginx 2023年4月16日
    00
  • 推荐我的新书《深入理解Nginx:模块开发与架构解析》

    .  背景知识?  如果仅希望了解怎样使用已有的Nginx功能搭建服务器,那么阅读本书不需要什么先决条件。但如果希望通过阅读本书的第二、第三部分,来学习Nginx的模块开发和架构设计技巧,则必须了解C语言的基本语法。在阅读本书第三部分时,需要读者对TCP有一个基本的了解,同时对Linux操作系统也应该有简单的了解。?  如何阅读本书?  我很希望将本书写成一…

    Nginx 2023年4月12日
    00
  • nginx全局命令配置

    刚才安装了Nginx, 命令需要去sbin目录执行,比较麻烦,设置下全局命令,就无需进入nginx的sbin目录执行nginx命令了,过程如下: vim /etc/init.d/nginx 2.把下面的代码粘贴进去 #!/bin/sh # nginx – this script starts and stops the nginx daemin # # ch…

    Nginx 2023年4月12日
    00
  • nginx注册为服务

    #!/bin/sh # # nginx – this script starts and stops the nginx daemon # # chkconfig: – 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy …

    Nginx 2023年4月11日
    00
  • 如何配置Nginx的静态文件服务?

    下面我将详细讲解如何配置Nginx的静态文件服务。 安装Nginx 首先,我们需要在服务器上安装Nginx。可以使用包管理器来安装Nginx,例如在Ubuntu上,可以使用下面的命令进行安装: sudo apt update sudo apt install nginx 安装成功后,我们可以使用下面的命令来检查Nginx的版本: nginx -v 配置Ngi…

    Nginx 2023年4月19日
    00
  • Nginx 请求的11个阶段

    48 1:当请求进入Nginx后先READ REQUEST HEADERS 读取头部 然后再分配由哪个指令操作 2:Identity 寻找匹配哪个Location  3:Apply Rate Limits 是否要对该请求限制 4:Preform Authertication 权限验证 5:Generate Content 生成给用户的响应内容 6:如果配置了…

    Nginx 2023年4月13日
    00
  • Win7下Nginx的安装与配置,win7nginx配置

    环境介绍:Win7 64位SP1 Nginx版本:nginx/1.8.0 参考链接http://nginx.org/en/docs/windows.html 1.  下载nginx1.8.0版本: http://nginx.org/download/nginx-1.8.0.zip 2. 解压软件到对应位置,并重命名文件夹为nginx 3. 启动nginx服务…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部