Nginx部署Springboot项目&&配置Https访问

简介: Nginx部署Springboot项目&&配置Https访问

前言


本文是基于Docker安装的Nginx,并且假设已经配置好证书的Nginx进行项目部署


正文


一、https证书下载并配置


1、项目基于Springboot内置Tomcat,启动,下载Tomcat证书


222.png


2、解压之后放入项目中的根目录中


111.png


3、修改application.yml配置文件


server:
  port: 9100
  ssl:
    key-store: classpath:123_www.example.pfx #证书的路径
    key-store-password: 666666 #密码


4、如果最后访问时候报错,可以尝试把该证书上传到服务器和jar包同一目录下。


二、SpringBoot项目配置


1、tomcat 配置类


import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @author xiaojie
 * @version 1.0
 * @description: tomcat配置http转htttps
 * @date 2022/5/7 8:52
 */
@Configuration
public class TomcatConfig {
    @Value("${my.httpServer.port}")
    private Integer httpServerPort; //http的端口
    @Value("${server.port}")
    private Integer serverPort;//https的端口,也是配置文件中配置的端口
    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(redirectConnector());
        return tomcat;
    }
    private Connector redirectConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(httpServerPort);
        connector.setSecure(false);
        connector.setRedirectPort(serverPort);
        return connector;
    }
}


配置文件


1. my:
2.   httpServer:
3.     port: 8100


2、然后将文件打包,并命名为xxx_9100.jar,上传到服务器。


将上面的端口8100修改为8101,9100端口不修改,在启动参数中修改,打包后上传到服务器。

打俩个jar包是为了做主备,也可以只打一个jar。


三、Nginx配置文件


1、myapp.conf


upstream myapp{
 server ip:9100; #此处的ip写服务器的真实ip,因为是docker构建的,不然可能访问不到
 server ip:9101 backup; #备机
}
server {
    listen 443 ssl;  
  server_name www.example.com; 
  ssl_certificate certs/1_www.example.com.pem;  
  ssl_certificate_key certs/1_www.example.com.key; 
  ssl_session_timeout 5m;
  ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_session_cache shared:SSL:1m;
  fastcgi_param  HTTPS        on;
  fastcgi_param  HTTP_SCHEME     https;
    location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout   10s;
    proxy_send_timeout      60s;
    proxy_read_timeout      60s;
        proxy_ignore_client_abort   on;
    proxy_pass https://myapp/; #此处与上面的upstream处对应
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}


2、启动项目


1. nohup java -jar -Dserver.port=9100 abc_9100.jar >log_9100.log &
2. nohup java -jar -Dserver.port=9101 abc_9101.jar >log_9101.log &


说明:9100和9101端口是nginx映射的端口,也是项目application.yml中配置项目的端口


3、启动项目


111.png

目录
打赏
0
0
0
0
9
分享
相关文章
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
53 7
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
Nginx进程配置指令详解
Nginx进程配置指令主要包括:`worker_processes`设置工作进程数;`worker_cpu_affinity`绑定CPU核心;`worker_rlimit_nofile`设置最大文件描述符数量;`worker_priority`设置进程优先级;`worker_connections`设置最大连接数;`daemon`控制守护进程模式;`master_process`启用主进程模式;`pid`设置PID文件路径;`user`指定用户和组;`error_log`配置错误日志。这些指令在`nginx.conf`中配置,用于优化和控制Nginx的运行行为。
125 10
ECS配置问题之输入ip无法访问如何解决?
ECS配置指的是对阿里云Elastic Compute Service(弹性计算服务)实例的硬件和软件资源进行设置的过程;本合集将详述如何选择合适的ECS配置、调整资源配比以及优化实例性能,以满足不同应用场景的需求。
云原生 - 负载均衡(SLB)配置 HTTPS 访问设置
云原生 - 负载均衡(SLB)配置 HTTPS 访问设置
2237 0
云原生 - 负载均衡(SLB)配置 HTTPS 访问设置
minio配置tls以开启https访问
minio配置tls以开启https访问
2995 0
怎么给ip地址配置https访问
为了配置公网IP地址的HTTPS访问,首先需明确需求并选择受信任的证书颁发机构(如JoySSL)。接着,在JoySSL官网注册并登录,填写特定注册码230922以获取免费IP证书的测试权限。提交证书申请时,填写IP地址及相关验证信息,并完成IP地址验证。验证通过后,下载证书文件。最后,使用浏览器访问IP地址,检查安全连接标志,确保无证书错误。通过以上步骤,可成功配置IP地址的HTTPS访问,提升数据传输安全性和可信度。
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
1038 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等