您现在的位置是:网站首页 > Nginx>Nginx 配置SSL安全证书,实现https
Nginx 配置SSL安全证书,实现https
- Nginx
- 2019-01-15
- 767人已阅读
今天把网站整体换成了https,特写一下配置使用心得。
说明:请保证nginx已安装了ssl模块,没有安装的话请查看这篇文章 Nginx编译添加http_ssl_module模块
1、证书申请
如果是公司的话可以购买阿里云、腾讯云、七牛云等等的安全证书,如果是个人站点或者要求不是特别高的话,可以去网上申请免费的证书,网上有很多免费的证书申请组织(个人感觉服务商的证书还是有点小贵),你可以选择适合自己的,站长使用的是这家的:https://freessl.cn
输入你的要申请域名创建就可以了,然后下一步会生成所需要的证书文件如下:
2、Nginx 配置证书
把生成的证书文件存储到服务器的某个目录如:/usr/local/nginx/cert/itxwzj
我使用的是nginx虚拟主机的方式,配置参数如下:
/usr/local/nginx/config/vhosts/itxwzj.com.cofig
server {
listen 80;
server_name www.itxwzj.com itxwzj.com;
rewrite ^(.*)$ http://$host$1 permanent; #强制使所有的http请求重写到https上
}
server {
listen 443 ssl;
server_name www.itxwzj.com itxwzj.com;
index index.html index.htm index.php;
root /var/www/html/laraveljj;
ssl on;
ssl_certificate /usr/local/nginx/cert/itxwzj/full_chain.pem;
ssl_certificate_key /usr/local/nginx/cert/itxwzj/private.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
.
.
.
}
如果应用需要同时支持 http 与 https 的话可以把 rewrite 的配置项给注释掉。
3、访问测试
如果你站点都使用的是本服务器的资源的话(js、css、image),这时使用 https 协议访问基本可以正常访问。
反之你的站点如果有调用外部域名的资源,像本站的图片就是使用七牛云OSS存储的,这时访问网站页面时图片资源虽然也可以访问,但是协议前面会报感叹号
如图:
原因:是因为https页面必须所有的请求都是https的请求方式。
因为我的OSS没有使用https协议,我在这里的处理方式是设置nginx的反向代理,把请求代理到 https://img.itxwzj.com
Nginx配置如下:
server {
.
.
.
#如果请求例:https://www.itxwzj.com/qiniuimg/lifes/20190114/8CNPKqwmm98TftZG6PVA21DmWVZ2aKtWy8CHqoqn.png?imageView2/2/w/200
#就会代理到:qiniuimg.itxwzj.com/lifes/20190114/8CNPKqwmm98TftZG6PVA21DmWVZ2aKtWy8CHqoqn.png?imageView2/2/w/200
location ^~/qiniuimg/
{
proxy_pass https://img.itxwzj.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
.
.
.
}
页面请求如:
这时再访问页面就会显示正常了
最新评论
站长大王来回复你了,长点心吧!