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

# 個人我的博客,但願你們幫忙踩一下html

Nginx 證書配置 強制使用https

  1. 先獲取證書,證書能夠有不少種, Let's Encrypt 或者阿里雲均可以
  2. 這裏我用Let's Encrypt 通配符證書 以centos 7爲例

獲取證書vue

#獲取證書生成工具
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)進行綁定
輸入郵箱,給你發送一封驗證郵件
確認贊成才能繼續。**node

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.comnginx

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

打開nginx.conf文件spring

#  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 bootdocker

命令

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

能夠看到證書已經生效了centos

在看子域名的 admin.ifsaid.comapi

至此 Nginx 域名和二級域名都是https 了 spring boot 和 vue.js 都實現了springboot

相關文章
相關標籤/搜索