这是一套部署特别方便的站点方案,包括使用nginx负载均衡,宝塔部署站点,云数据库加一套安全产品云WAF。
一、结构图
1、基本功能
负载均衡,WEB,数据库都是在一个云平台上,内网都属于一个vpc二层网络。
2、安全产品
云WAf可以独立于云平台,在基本框架部署完毕后,修改CNAME记录,完成调试。在项目上线前,千万不能暴露了原有的解析地址,否则直接可以绕过WAF,直接攻击站点IP地址。
二、功能介绍
1、云数据库
云数据库在相同的vpc网络,ip地址是192.168.1.4,宝塔自带mysql数据库,由于是性能问题,使用独立出来的云数据库,只要提供云数据库的ip地址和账号密码,即可完成数据库部署。
2、站点
站点部署在两台宝塔上,宝塔之间使用付费购买的同步文件,保证两个站点之间文件是相同的。如果需要部署证书,可使用宝塔免费证书。
文件同步,只能同步文件夹的数据,证书,站点名字,都需要单独设置一样的。
3、负载均衡
本次的负载均衡采用nginx负载,当外网访问过来时,按照一定的规则,内网IP传输到两台web主机,实现负载功能。
4、云WAF
云WAF主要用来做安全防护,配置灵活,部署方便,只需要设置站点域名,WAF的分配给域名做cname解析,即可实现防护的功能
5、证书
证书部署,首先部署在宝塔的站点,解析先做在宝塔的公网ip,看下是否正确;nginx负载也需要部署证书,解析改到负载的公网ip,检查;部署云WAG,需要部署域名证书,不需要改解析了,只要做cname即可。
三、设备配置
1、负载均衡
/etc/nginx/conf.d/websites.conf
http {gzip on;gzip_min_length 5k;gzip_buffers 16 64K;gzip_comp_level 6;client_max_body_size 25m;upstream kkk123 {ip_hash;server 192.168.1.2:80 weight=5 max_fails=3 fail_timeout=30s;server 192.168.1.2:80 weight=5 max_fails=3 fail_timeout=30s;}include /etc/nginx/conf.d/websites.conf;# Load configuration files for the default server block.# include /etc/nginx/default.d/*.conf;}http { gzip on; gzip_min_length 5k; gzip_buffers 16 64K; gzip_comp_level 6; client_max_body_size 25m; upstream kkk123 { ip_hash; server 192.168.1.2:80 weight=5 max_fails=3 fail_timeout=30s; server 192.168.1.2:80 weight=5 max_fails=3 fail_timeout=30s; } include /etc/nginx/conf.d/websites.conf; # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; }http { gzip on; gzip_min_length 5k; gzip_buffers 16 64K; gzip_comp_level 6; client_max_body_size 25m; upstream kkk123 { ip_hash; server 192.168.1.2:80 weight=5 max_fails=3 fail_timeout=30s; server 192.168.1.2:80 weight=5 max_fails=3 fail_timeout=30s; } include /etc/nginx/conf.d/websites.conf; # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; }
/etc/nginx/conf.d/websites.conf
server {listen 80;listen 443 ssl ;#listen [::]:80;server_name www.123.com;ssl_certificate "/etc/nginx/cert/www_123_com.pem";ssl_certificate_key "/etc/nginx/cert/www_123_com.key";ssl_session_timeout 10m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;#=========301-START===========## if ($host ~ '^shop.httx3.top'){# return 301 https://www.123.com$request_uri;# }if ( $scheme = http ){return 301 https://$server_name$request_uri;}# #=========301-STOP===========## #error_page 404 /404.html;location / {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto https;proxy_redirect off;proxy_pass http://kkk123;}}server { listen 80; listen 443 ssl ; #listen [::]:80; server_name www.123.com; ssl_certificate "/etc/nginx/cert/www_123_com.pem"; ssl_certificate_key "/etc/nginx/cert/www_123_com.key"; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #=========301-START===========# # if ($host ~ '^shop.httx3.top'){ # return 301 https://www.123.com$request_uri; # } if ( $scheme = http ){ return 301 https://$server_name$request_uri; } # #=========301-STOP===========# # #error_page 404 /404.html; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_redirect off; proxy_pass http://kkk123; } }server { listen 80; listen 443 ssl ; #listen [::]:80; server_name www.123.com; ssl_certificate "/etc/nginx/cert/www_123_com.pem"; ssl_certificate_key "/etc/nginx/cert/www_123_com.key"; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #=========301-START===========# # if ($host ~ '^shop.httx3.top'){ # return 301 https://www.123.com$request_uri; # } if ( $scheme = http ){ return 301 https://$server_name$request_uri; } # #=========301-STOP===========# # #error_page 404 /404.html; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_redirect off; proxy_pass http://kkk123; } }
3、nginx注意点
上传证书key和pem时,需要修改密钥开头的值,否则会报错。
key文件BEGIN KEY改成BEGIN PRIVATE KEYEND KEY改成END PRIVATE KEYpem文件BEGIN CERTIFICATE改成BEGIN TRUSTED CERTIFICATEEND CERTIFICATE改成END TRUSTED CERTIFICATEkey文件 BEGIN KEY改成BEGIN PRIVATE KEY END KEY改成END PRIVATE KEY pem文件 BEGIN CERTIFICATE改成BEGIN TRUSTED CERTIFICATE END CERTIFICATE改成END TRUSTED CERTIFICATEkey文件 BEGIN KEY改成BEGIN PRIVATE KEY END KEY改成END PRIVATE KEY pem文件 BEGIN CERTIFICATE改成BEGIN TRUSTED CERTIFICATE END CERTIFICATE改成END TRUSTED CERTIFICATE
nginx基本命令
检查配置
nginx -t
重启服务
nginx -s reload
2、云WAF
云WAF也需要添加证书,在使用原始的key文件和pem文件;不使用修改过的nginx的key和pem文件。
在WAF上面设置需要保护的域名,会生成一个cname记录,需要把这个cname记录添加到域名解析。
域名解析使用负载均衡的公网IP地址。
验证:
直接ping站点的域名,返回的域名信息和ip地址,均已经变成WAF的信息,真实的负载均衡公网IP地址没有显示。
四、方案优势
有一定的安全防护,部署经费低,使用云资源,开通时间短,部署方便。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
暂无评论内容