最近把服务器迁移到了国内的腾讯云,然后需要备案了。等了十来天拿到备案号,将域名和服务器绑定了起来。于是就给网站配置全HTTPS,并且将HTTP请求转发到了HTTPS,并把通过IP直接访问进行了拦截。
一、Nginx配置HTTPS
我的系统是Ubuntu 16.04.1 LTS
1、申请证书
个人域名申请免费的DV证书就好,有很多申请的地方,比如阿里云、腾讯云、freessl等等,这里就不赘述了。
2、上传证书
申请的证书一般为两个文件,一个是xxxx.pem(xxx.crt也可以,是一样的),一个是xxxx.key。
在服务器创建一个文件夹,我创建在了/etc/nginx/cert这下面,然后通过vim新建文件把内容复制过去,具体的步骤就不展开了。
3、配置nginx
Nginx的默认配置文件在/etc/nginx/nginx.conf。
修改配置文件在http {}中加入以下内容。
加#号是需要修改的内容。
1 | server { |
保存后执行命令
1 | nginx -s reload |
如果什么都没有打印说明配置成功,如果有报错信息请根据报错信息具体解决。
二、配置HTTP自动跳转HTTPS
网站配置过HTTPS后,需要把HTTP的链接自动跳转到HTTPS,也就是把所有的80端口请求转发到443端口,配置文件地址请看上方,具体配置如下。
1 | server { |
保存后执行命令同上。
三、禁止IP直接访问
如果有人把他的域名绑定到你的IP上,那么访问他的IP也是可以打开你的网站内容的,这样是不安全的。还有直接访问IP也是可以打开网站的,这样也是不优雅的,于是直接禁止掉IP的访问,同时其他域名访问也直接返回400。具体配置如下。
1 | server { |
四段代码位置随意。
这样https域名可以访问,http域名会自动调整到https,IP直接访问不管是http://ip还是https://ip都会直接返回400,其他人域名访问服务器的ip,也会因为server_name不符合直接跳400页面的。