Nginx配置静态页面+springboot应用+swagger+SSL的实现

简介: Nginx配置静态页面+springboot应用+swagger+SSL的实现

springboot实现了ssl功能之后,还要再同一台服务器部署一个静态页面用于其他的需求。选用的是Nginx,配置了ssl,动态网址+静态页面。

这里还是把springboot应用的ssl功能屏蔽了,直接暴露了8080端口,然后通过Nginx指向到8080。具体配置看下面

# nginx.conf
#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    charset utf-8;
    #gzip  on;
    server{
        #下面配置会报异常“[warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead”
        #ssl on
        #这样才是正确的
    listen 443 ssl;
    server_name www.xxx.com;
    #证书文件
    ssl_certificate /etc/certs/cert.pem;
    ssl_certificate_key /etc/certs/cert.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    
    #swagger相关
    location /swagger-ui.html {     
            proxy_set_header Host $host; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
      proxy_pass http://127.0.0.1:8080/swagger-ui.html;
    }   
    location /swagger-resources {
      proxy_set_header Host $host; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
      proxy_pass http://127.0.0.1:8080/swagger-resources;
    }   
    location /v2/api-docs {
      proxy_set_header Host $host; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
      proxy_pass http://127.0.0.1:8080/v2/api-docs;
    }   
    location /webjars {
      proxy_set_header Host $host; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
      proxy_pass http://127.0.0.1:8080/webjars;
    }
    
    #其他业务url,有多个,省略了
    location /wxpay {
      proxy_set_header Host $host; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
      proxy_pass http://127.0.0.1:8080/wxpay;
    }
    
    #静态页面
    location /index.html {
      root /www/html/;
      index index.html;
    }
    #静态资源(静态页面需要使用的js文件)
    location /jquery-1.9.1.min.js {
      root /www/html/;
    }
    }   
    server {
        listen       80;
        server_name  www.xxx.com;
        #跳转到443端口
    rewrite ^/(.*)$ https://www.xxx.com:443/$1 permanent;
    }
}

这里遇到一个坑,就是在静态资源配置的时候这样写的

#静态资源(静态页面需要使用的js文件)
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|pdf|txt) {
  root /www/html/;
}

这样是满足静态页面index.html的需求,但是会把swagger相关的静态资源指向/www/html/目录,这肯定是找不到的,所以没办法加载,需要指明文件。

相关文章
|
18天前
|
应用服务中间件 网络安全 nginx
Nginx配置SSL证书时——nginx:[emerg]unknowndirectivessl错误
Nginx配置SSL证书时——nginx:[emerg]unknowndirectivessl错误
216 0
|
5天前
|
应用服务中间件 nginx
蓝易云 - 编写Dockerfile制作Web应用系统nginx镜像
这是一个基本的例子,你可能需要根据自己的应用进行调整。例如,你可能需要添加更多的配置,或者使用不同的Nginx版本。
18 2
|
9天前
|
API
1天搞定SpringBoot+Vue全栈开发 (2)RESTful API与Swagger
1天搞定SpringBoot+Vue全栈开发 (2)RESTful API与Swagger
|
10天前
|
Java 关系型数据库 Docker
docker打包部署spring boot应用(mysql+jar+Nginx)
docker打包部署spring boot应用(mysql+jar+Nginx)
|
14天前
|
负载均衡 安全 应用服务中间件
nginx配置ssl和反向代理的配置代码
【5月更文挑战第2天】nginx配置ssl和反向代理的配置代码
44 3
|
18天前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用之在阿里云Serverless中函数计算FC nginx 部署上去之后放置静态页面如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
281 0
|
18天前
|
前端开发 Java 应用服务中间件
Springboot解决跨域问题方案总结(包括Nginx,Gateway网关等)
Springboot解决跨域问题方案总结(包括Nginx,Gateway网关等)
|
18天前
|
安全 应用服务中间件 网络安全
linux_nginx中添加ssl配置(open ssl)
linux_nginx中添加ssl配置(open ssl)
31 1
|
18天前
|
安全 应用服务中间件 网络安全
SSL原理、生成SSL密钥对、Nginx配置SSL
现在,你的Nginx虚拟主机应该已经配置了SSL,可以通过HTTPS安全访问。确保在生产环境中使用有效的SSL证书来保护通信的安全性。
42 0
|
18天前
|
前端开发 应用服务中间件 网络安全
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
195 0