一、准备工作
1、准备一个域名,与cloudflare账户绑定。
2、准备一个服务器,与域名绑定,并搭建http/https服务器,可以用apache,也可以用nginx,我用的apache。
3、用邮箱注册一个cloudflare账号,注册过程比较简单,不赘述。
二、绑定域名与cloudflare账户
注册cloudflare账户后,会有add site按钮,按照提示一步一步操作,其中比较关键的是修改域名的域名控制服务器,默认的是域名注册商的域名控制服务器。
该操作需要登录到域名账户下,按照cloudflare的提示,把域名控制服务器修改成cloudflare的域名控制服务器。一般有两个。
三、服务器搭建http/https服务
yum install httpd可以直接安装apache服务,安装完成后,service httpd start启动http服务。
如果要搭建https服务,需要yum install mod_ssl openssl
安装完mod_ssl后,在/etc/httpd/conf.d/下可以看到ssl的配置文件ssl.conf,ssl相关的配置在该文件中修改,其中比较重要的是监听端口、证书、日志。
1、监听端口在配置文件中为
Listen 443
如果有需要可以修改(记得开启防火墙相应端口)。
2、证书的配置为:
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
根据需要把上述两个配置修改正确。
关于证书,如果用cloudflare加速,cloudflare提供免费的签名证书可以使用(cloudflare面板上显示“小锁Crypto”图标的按钮),如果自己没有签名证书,最好不要用自签名的证书,因为cloudflare认为你的网站不安全,通过cloudflare访问不通。
用cloudflare的免费证书时,点击cloudflare面板上显示“小锁Crypto”图标的按钮
首先选择第一项选择:Full (strict)
然后,去签发证书,往下拉到Origin Certificates项目,点击右侧Create Certificate(创建证书)
创建一个二级域名,有效期默认15年,下一步就可以看到生成了证书和私钥
拷贝证书保存成xxx.crt文件,拷贝私钥保存成xxx.key,把这两个文件放到https服务器中的指定目录,并保证上述ssl.conf配置中证书和私钥的配置正确。
service httpd restart重启http服务,应该需要把/etc/httpd/conf/httpd.conf中的Listen 80注释掉。
至此,通过域名就可以访问到你的网站了。
cloudflare免费证书可以参考这里https://www.qwblog.cn/cloudflare-ssl.html
另外,也可以用openssl生成自签名的证书,命令如下
生成私钥
openssl genrsa -out server.key 2048
生成签名请求
openssl req -new -key server.key -out server.csr
生成签名证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
3、日志的配置
默认的日志记录
http:/var/log/httpd/access_log
https:/var/log/httpd/ssl_access_log
对于经过cloudflare加速后,你会发现默认日志中只记录了cloudflare的ip,看不到真正访问网站的客户端ip。
其实cloudflare在转发请求时在X-Forwarded-For字段已经携带了该信息,可以通过修改日志来记录该ip。
http:
vi /etc/httpd/conf/http.conf
LogFormat "\"%{X-Forwarded-For}i\" %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i" X-Forwarded-For
保存修改,重启http服务即可
https:
https的略有不同,我的做法是自定义一个log文件,自定义格式。
vi /etc/httpd/conf.d/ssl.conf
在末尾增加
CustomLog logs/ssl_my_log combined
其中combined的格式在http.conf中已经定义。