最近公司開發了一款小程序的應用,但是小程序為了保證數據安全,強制要求使用HTTPS,然后就不得不去配置了一下。
之前在php開發的項目上配置過一次,使用的是wdcp的控制台程序,配置起來很簡單,不需要自己修改參數,按照教程將證書文件放進去就OK了。
這次是Java項目,而且用了SpringBoot,他內部集成了tomcat,沒找到怎么修改tomcat參數的方法,而且看了SpringBoot配置起來好像也不是很方便。
因此就折中選擇了Nginx做服務器,轉發到Java項目,經過以前的幾個項目,對Nginx 的基本用法和配置還是了然於胸的。
第一步,安裝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證書的申請可以在阿里雲申請免費的證書。
配置SpringBoot
在SpringBoot 的application.properties文件中進行配置:
#如果使用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