Nginx+SpringBoot配置SSL證書,實現https訪問


從http到https需要申請ssl證書。

阿里雲有免費的ssl證書,買了一個測試。

步驟

我的環境為nginx+springboot。springboot中不配置ssl,只需要配置nginx即可。

  1. 首先,在服務器控制台打開443端口。默認的網站都是80端口,https默認為443端口
  2. 在域名控制台建好用來測試的二級域名,用一級域名當然也可以。
  3. 申請ssl證書,驗證的時候,按照網站提示的要求,在域名那里填相應的記錄就好。
  4. ssh連接到服務器,配置nginx.conf文件。
  5. 測試配置文件nginx.conf是否正確。/usr/local/nginx/sbin/nginx -t (nginx安裝的目錄/sbin/nginx -t)。
  6. 當填寫完,測試過,沒有錯誤信息的時候,重啟nginx。/usr/local/nginx/sbin/nginx -s reload

一些錯誤

  1. nginx 報錯 : [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead

因為nginx 1.15 及以后的版本,不需要再寫 ssl on; 了。需要把ssl on 改為listen 443 ssl;

如果還不行,那就是服務器的443端口沒有打開。

  1. 配置文件中不要直接復制百度到的。出現這個錯誤,nginx: [emerg] unknown directive " " in /usr/local/nginx/conf/nginx.conf,是因為復制到的空格的原因。需要刪除空格重新寫。

源碼

貼上我的https的部分的配置文件(每個二級域名都需要一個這種配置):

# http -> Https 如果使用的http協議訪問,重定向到https訪問
server {
    listen         80;
    server_name    xxx.xxx; # 域名
    add_header Strict-Transport-Security max-age=15768000;
    return 301 https://$server_name$request_uri;
}
# Https 的配置,除了有注釋的地方,其他地方和我一樣即可
server {
    listen 443 ssl; # 老版本是ssl on;較新的為listen 443 ssl;
    server_name xxx.xxx; # 域名
    
    keepalive_timeout 10m;
    ssl_certificate      cert/xxx.xxx.pem; # 申請的證書,把證書和秘鑰上傳到nginx.conf的同級目錄cert的目錄下
    ssl_certificate_key  cert/xxx.xxx.key; # 秘鑰
    ssl_session_timeout 24h;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
            proxy_pass http://127.0.0.1:8080; # 反向代理到本機的8080端口,8080端口的那個服務器不需要任何關於https的配置。
            proxy_redirect off;
            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_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
        }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM