共计 1883 个字符,预计需要花费 5 分钟才能阅读完成。
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。