ssl 證書免費申請
ssl for free 可以免費爲我們提供三個月的 ssl 證書及續簽服務,填寫業務域名,上傳驗證文件到業務服務器,驗證成功後便會生成相應的證書.crt和私鑰.key,提供一次性下載,重新生成,銷燬及續簽服務。
Nginx 配置 HTTPS / 負載均衡
配置如下
注意:在upstream中加入hash語句。server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法。
upstream upstream_server_api {
#ip_hash; 同一請求ip發往同一負載
#fair; 按後端服務器的響應時間來分配請求,響應時間短的優先分配
#--url_hash-- 按訪問url的hash結果來分配請求,使每一個url定向到同一個後端服務器
#hash $request_uri;
#hash_method crc32;
#--url_hash--
server 127.0.0.1:8081 weight=1 max_fails=3 fail_timeout=30s;#權重1 失敗3此後暫停30s
server 127.0.0.1:8082 weight=2 max_fails=3 fail_timeout=30s;#權重2 失敗3此後暫停30s
server 127.0.0.1:8083 backup;# 當其他服務器不可用或全忙時啓用
server 127.0.0.1:8084 down;# 服務下線
}
server {
listen 443 ssl default;
server_name api.foo.com;
index index.html index.htm index.php;
root /home/wwwroot/web;
...
ssl on;
ssl_certificate /opt/nginx_ssl/certificate.crt;
ssl_certificate_key /opt/nginx_ssl/private.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
...
# 如果是靜態請求 nginx 負責處理 否則轉發給後端服務器location 處理動態請求
# 你可以根據自己的業務定義相應的轉發規則
location / {
try_files $uri $uri/ @loc_server_api;
}
# 後端服務器location則反向代理給後端服務
location @loc_server_api {
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://upstream_server_api;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
location ~ /\. {
deny all;
}
}
如果需要重定向 http 到 https 可使用如下配置
server {
listen 80 default;
server_name api.foo.com;
#重定向http至https
return 301 https://api.foo.com;
}
檢查配置後重啓服務即可
nginx -t
systemctl restart nginx.service
利用阿里雲 SCDN 全站加速隱藏業務服務器 IP
全站加速 SCDN 並不能對抗 DDOS/CC 攻擊,它只是在 CDN 的基礎上同時加速上行請求:選用更爲暢通和高速的網絡通道傳輸客戶端向服務器端發送的請求,適合動態類數據的請求(web service)。
1、創建業務域名 api.foo.com 下的 SCDN 規則,獲得加速域名。
2、CNAME 解析業務域名到相應的 SCDN 規則提供的加速域名。
3、配置回源方式(業務域名|源站域名|自定義域名),這裏我們選業務域名,我們業務服務器也應一致監聽此業務域名。
4、配置 HTTPS 填寫申請的證書及私鑰開啓 HTTPS 訪問,可配置是否重定向 HTTP 請求至 HTTPS。
5、保存生效
如此業務域名將被解析至全站加速CDN,而後 SCDN 回源請求給隱藏在後方的業務服務器,攻擊者無法發現真實的業務服務器IP。