最近因爲小程序發佈需要接口https化的原因,不得不讓自己的網站支持https。一些原理啥的我就不講了,直接說下自己怎麼做的吧
首先需要在阿里雲去購買一個https證書,你可以點擊這兒進行傳送,免費版的不收錢,而且可以申請很多個,如果你有多個網站需要支持https的話。
購買之後,點擊補充信息,並在接下來的頁面填寫完必要的信息。域名校驗類型注意選擇dns,並且勾選下方的複選框。
點擊系統生成src,點擊創建。這樣申請https證書的請求就被創建了。
大概等個5分鐘,阿里就會給出回覆。一般情況下域名的txt解析都已經被自動添加上去了,如果提示未成功,那自己按照提示手動添加下吧。
創建成功之後我們就可以看到證書已簽發,然後卸載證書到計算機本地,想要傳到服務器,你可以通過sftp或者ftp,如果這些做不到就找一個存放資源的空間—比如七牛雲空間,把pem和key文件傳送去,複製他們的url,然後在命令行裏輸入
wget http://xxxxx.pem
這樣你就獲取到他們了。
在你的服務器上新建一個目錄,把這些文件放在這個目錄下
mkdir /var/ssl
mv xxx.pem /var/ssl/
mv xxx.key /var/ssl/
接下來就是配置nginx了,不講那麼多了,直接貼代碼了
########### website(使http可以訪問) ##########
server {
listen 80;
# listen 443 default ssl;
server_name api.andylistudio.com;
# rewrite ^(.*)$ https://$host$1 permanent;
location / {
proxy_pass http://localhost:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
# listen 443 default ssl;
server_name khdoc.andylistudio.com;
# rewrite ^(.*)$ https://$host$1 permanent;
location / {
proxy_pass http://localhost:8083/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
############ ssl(使https可以訪問) ################
server {
listen 443 ssl;
server_name api.andylistudio.com;
ssl on;
root html;
index index.html index.htm;
ssl_certificate /var/ssl/api/api.pem;
ssl_certificate_key /var/ssl/api/api.key;
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 / {
proxy_pass http://localhost:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 443 ssl;
server_name khdoc.andylistudio.com;
ssl on;
root html;
index index.html index.htm;
ssl_certificate /var/ssl/khdoc/khdoc.pem;
ssl_certificate_key /var/ssl/khdoc/khdoc.key;
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 / {
proxy_pass http://localhost:8083/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}