最近公司開發了一款小程序的應用,可是小程序爲了保證數據安全,強制要求使用HTTPS,而後就不得不去配置了一下。php
以前在php開發的項目上配置過一次,使用的是wdcp的控制檯程序,配置起來很簡單,不須要本身修改參數,按照教程將證書文件放進去就OK了。nginx
此次是Java項目,並且用了SpringBoot,他內部集成了tomcat,沒找到怎麼修改tomcat參數的方法,並且看了SpringBoot配置起來好像也不是很方便。小程序
所以就折中選擇了Nginx作服務器,轉發到Java項目,通過之前的幾個項目,對Nginx 的基本用法和配置仍是瞭然於胸的。tomcat
第一步,安裝Nginx
服務器使用的是CentOS 7的版本,所以,直接選擇了Nginx 的源碼安裝,在Nginx官網下載了最新的安裝包,開始按照教程進行安裝。安全
#下載後進行解壓
tar -xvzf nginx-1.12.2.tar.gz
cd nginx-1.12.2
#執行如下命令 這一步很重要
./configure --with-http_ssl_moudle
#若是出現關於OpenSSL的錯誤,請安裝openssl ,而後重複以前的操做
yum -y install openssl openssl-devel
#進行make 安裝
make
make install
安裝完成後能夠啓動Nginx進行測試,若是出現Nginx 的歡迎頁面,則安裝成功。服務器
申請SSL證書
HTTPS須要SSL證書,SSL證書的申請能夠在阿里雲申請免費的證書。session
配置SpringBoot
在SpringBoot 的application.properties文件中進行配置:app
#若是使用IDEA進行開發的話,這些參數都有提示
server.tomcat.remote_ip_header=x-forwarded-for
server.tomcat.protocol_header=x-forwarded-proto
server.tomcat.port-header=X-Forwarded-Port
server.use-forward-headers=true
server.port=8080
#端口號不在使用80,能夠改成其餘的端口
配置Nginx
將申請的證書放在Nginx的安裝目錄下,我放在了 /usr/local/nginx/conf/cert/ 下,有兩個文件,文件後綴分別爲 .key和.pem測試
接下來在nginx.conf進行配置:阿里雲
server {
listen 80;
server_name xx.example.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
#其實應該配置到這裏就能夠了,將80端口的訪問轉發到443端口
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://xx.example.com:8080;
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;
}
}
server {
listen 443;
server_name xx.example.com;
ssl on;
#配置證書的路徑
ssl_certificate cert/1534768019908.pem;
ssl_certificate_key cert/1534768019908.key;
#ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
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 / {
#配置轉發到8080端口
proxy_pass http://xx.example.com:8080;
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;
}
}
上面配置完成後就能夠啓動Nginx 了,若是沒有錯誤的話, 如今應該是能夠進行訪問了。
雖然實際步驟並很少,可是對於第一次來講,也走了不少彎路,好比安裝Nginx 的時候沒有安裝http_ssl_moudel,而後配置完了沒法啓動,nginx報錯提示:
nginx:[emerg] unknown directive "ssl" 1配置80端口沒有轉發到443,仍舊以http訪問。 總之,配置的時候會出現不少意想不到的問題,仍是須要耐心,而且遇到問題不要慌,仔細查看錯誤提示,而後上網查詢,基本你遇到的問題,網上都已經有了各類各樣的解答,那就須要從中篩選本身須要的解決方案。 祝全部人都有一次配置成功。--------------------- 版權聲明:本文爲CSDN博主「已經死去的貓」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/fenglin0429/article/details/81347634