资讯专栏INFORMATION COLUMN

Nginx https配置 和 反向代理到spring boot和vue.js

oneasp / 2324人阅读

摘要:意思是求给配置一条记录,在没有确认记录生效之前不要回车执行。

# 我的个人博客,希望大家帮忙踩一下

Nginx 证书配置 强制使用https

先获取证书,证书可以有很多种, Let"s Encrypt 或者阿里云都可以

这里我用Let"s Encrypt 通配符证书 以centos 7为例

获取证书

 #获取证书生成工具
wget https://dl.eff.org/certbot-auto     
#安装软件
chmod a+x certbot-auto                      
#获取证书 -d 可以有多个 *.test.com 只能匹配 子域名和www开头,所以在加一个主域名不带www的 如(test.com)
./certbot-auto certonly  -d *.test.com -d test.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory   

**上面的命令会给出三个的提示仔细看:
是否同意 Let"s Encrypt 协议要求
询问是否对域名和机器(IP)进行绑定
输入邮箱,给你发送一封验证邮件
确认同意才能继续。**

Please deploy a DNS TXT record under the name
_acme-challenge.test.com with the following value:

2_8KBE_jXH8nYZ2unEViIbW52LhIqxkg6i9mcwsRvhQ

Before continuing, verify the record is deployed.

Press Enter to Continue
Waiting for verification...
Cleaning up challenges
意思是:求给 _acme-challenge.test.com 配置一条 TXT 记录,在没有确认 TXT 记录生效之前不要回车执行。
这个需要自己配置
配置成功了以后,等30秒在按回车,(保证解析的正确)
确认生效后,回车执行
恭喜您,证书申请成功,证书和密钥保存在下列目录:
/etc/letsencrypt/archive/test.com

下面配置Nginx Nginx 安装我就不教了

打开nginx.conf文件

  
   #  spring boot 项目的  https的配置
    server {
        listen 443 ssl;    # 监听端口
        server_name ifsaid.com www.ifsaid.com;    # 域名配置,可以多个
        
        ssl_certificate /etc/letsencrypt/live/ifsaid.com/fullchain.pem;            # 证书地址
        ssl_certificate_key /etc/letsencrypt/live/ifsaid.com/privkey.pem;       # 证书地址
        
         # 固定写法-------------
        ssl_session_cache   shared:SSL:1m;
        ssl_session_timeout 5m;
        ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers   EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers on;

       # 这里配置反向代理的项目
        location / {
           
            proxy_pass http://127.0.0.1:8090;     # spring boot 项目的端口号
            
            # 固定写法-------------
            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;
        }
    }
    
    #   spring boot 项目的 http的配置  强制转发到https端口
    server {
        listen 80;
        server_name ifsaid.com www.ifsaid.com;
        
        #这是老版本的Nginx转发
        #rewrite ^(.*) https://$server_name$1 permanent;
        
        #这是新版本的Nginx转发
        return 301 https://$server_name$request_uri;
        
        # 固定写法-------------
        tcp_nodelay     on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    #  vue 项目的  https的配置
    server {
        listen 443 ssl;
        server_name admin.ifsaid.com;
        
        ssl_certificate /etc/letsencrypt/live/ifsaid.com/fullchain.pem;            #同上  当然也可以知道另一个证书
        ssl_certificate_key /etc/letsencrypt/live/ifsaid.com/privkey.pem;      #同上
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers on;

        location / {
            root /home/nginx/admin;  # vue.js 打包目录
            
            #固定写法就可以了
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
    }
    
    #  vue 项目的 http的配置  强制转发到https端口
    server {
        listen 80;
        server_name admin.ifsaid.com;        #除了二级域名可以改变,其他都可以不变
        #rewrite ^(.*) https://$server_name$1 permanent;
        return 301 https://$server_name$request_uri;
        
        tcp_nodelay     on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    # 然后
    Nginx 停止:  
    /usr/local/nginx/sbin/nginx -s quit
    
    启动
    /usr/local/nginx/sbin/nginx    
    

启动在 docker中启动 spring boot

命令

docker run -p 8090:8090 -t springboot/spring-boot-docker

可以看到证书已经生效了

在看子域名的 admin.ifsaid.com

至此 Nginx 域名和二级域名都是https 了 spring boot 和 vue.js 都实现了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40162.html

相关文章

  • 全栈开发——动手打造属于自己的直播间(Vue+SpringBoot+Nginx

    摘要:经过琢磨,其实是要考虑安全性的。具体在以下几个方面跨域连接协议升级前握手拦截器消息信道拦截器对于跨域问题,我们可以通过方法来设置可连接的域名,防止跨站连接。 前言 大学的学习时光临近尾声,感叹时光匆匆,三年一晃而过。同学们都忙着找工作,我也在这里抛一份简历吧,欢迎各位老板和猎手诚邀。我们进入正题。直播行业是当前火热的行业,谁都想从中分得一杯羹,直播养活了一大批人,一个平台主播粗略估计就...

    e10101 评论0 收藏0
  • 一文教您如何通过 Docker 搭建反向代理 Ngnix,并配置 Https SSL 证书

    摘要:由于上面我们已经新建了一个配置文件,这里就直接将反向代理的配置写在里面通过配置,我们反向代理到了端口的服务。六最后本文中,我们学习了如何通过快速搭建环境,并对其配置证书和反向代理,让网站能够以协议来访问。 欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习、面试资源哟!!个人网站: https://www.except...

    ZHAO_ 评论0 收藏0
  • 慕课网_《Ajax跨域完全讲解》学习总结

    摘要:时间年月日星期三说明本文部分内容均来自慕课网。当预检请求通过的时候,才发送真正的请求。 时间:2018年04月18日星期三说明:本文部分内容均来自慕课网。@慕课网:https://www.imooc.com教学源码:https://github.com/zccodere/s...学习源码:https://github.com/zccodere/s... 第一章:课程介绍 1-1 课程介...

    fredshare 评论0 收藏0
  • Nginx 极简入门教程!

    上篇文章和大家聊了 Spring Session 实现 Session 共享的问题,有的小伙伴看了后表示对 Nginx 还是很懵,因此有了这篇文章,算是一个 Nginx 扫盲入门吧! 基本介绍 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。 Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点开发...

    _DangJin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<