1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 借助nginx实现反向代理 并通过SSL证书实现https访问以及http调整https访问。

借助nginx实现反向代理 并通过SSL证书实现https访问以及http调整https访问。

时间:2019-12-25 09:13:16

相关推荐

借助nginx实现反向代理 并通过SSL证书实现https访问以及http调整https访问。

目录

前言nginx反向代理为什么我们需要用到反向代理?开始配置软件版本申请SSL证书首先安装nginx上传.crt和.key证书创建配置文件验证配置文件并重启nginx服务成功若有帮助,希望可以点赞收藏😁。

前言

这段时间借助hexo粗略的搭建了一个自己的个人博客,通过域名访问时发现浏览器一直不安全,最后发现是因为一直通过的http访问。想着既然如此一步到位,完善成https访问方式。正巧腾讯云域名申请报备后, SSL证书的申请很容易, 查阅了不少资料,作为小白最后也完成了这一目标。 所以在这里将踩过的坑,以及经验步骤总结如下,欢迎指正😀。

首先我会简单解释一下nginx、以及反向代理。

nginx

能找到的大多数资料都是基于 nginx 实现的,那么什么是 nginx 呢?

Nginx(发音同“engine X”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。——摘自维基百科

对于不熟悉web的人,或者小白可以将其看作一网页服务器就好,我们这里需要用到的主要有反向代理

反向代理

借助在知乎上找到的一个图可以很好的解释

没看明白?没事,来点形象的栗子😏

正向代理:

假如你们宿舍只有一位同学可以用手机上网购物,你们有购物的需求都需要借助这位同学来实现。在这个过程中,最终你们都可以达到在电商平台购物的目的,但对于电商平台或者说店家来说,他并不知道到底是谁购买了产品

在宿舍这可看作一个小的LAN,那位可以用手机上网的同学则充当了正向代理的作用,即我们一般意义上的代理

反向代理:

换个栗子,你们社团需要买一些办公用品以及活动用品,交由一个同学外出采购,因为他有附近所有商家的联系方式。你们将需要购买的用品告诉那个同学后,那个同学外出采购,再带回来。在这个过程中,你们只提交了需求,交由那个同学去完成,而最终每一个物品在实际在哪家店购买,你们并不知晓。

在上面这个过程中,那位 同学便 扮演了反向代理的角色。

为什么我们需要用到反向代理?

1、保护服务安全

隐藏服务节点的IP;

将服务节点置于防火墙之后,避免直接攻击业务节点服务器。

2、服务节点更专注于业务,同时提升性能

由于有反向代理的存在,可以让反向代理服务器去实现比如https、gzip压缩等与业务无关的功能;

提供动静态分离,将静态文件发往静态服务器或本地文件系统,避免业务节点处理这些与业务无关的请求;

提供缓存机制,将一些短时间内不会变化的动态内容,在反向代理服务器这层增加缓存,降低业务服务器的请求量;

由于控制权在代理服务这边,完全可以根据服务节点的性能动态分配请求,做到服务节点性能最佳。

正是由于Ngxin引入了反向代理的特性,让请求和响应都要经过Nginx,因此给Nginx带来了非常多的可能。比如负载均衡、HTTP缓存等。

以上内容来自:php中文网

说回实际,因为 hexo 服务默认开启端口是4000,我们可以通过反向代理将 https 或者 http 指向4000端口。

开始配置

软件版本

注意由于nginx版本不同,配置可能不同

申请SSL证书

配置https服务,必须得有SSL证书。在某某云申请的域名、云服务器,都可以在对应的平台申请SSL 证书,很容易且快速。

在腾讯云官网购买的云服务器,您可以登录 云服务器控制台 获取服务器 IP 地址、用户名及密码。

申请下SSL证书,将其下载解压后,会发现有Nginx文件夹,打开里面的.crt和.key文件即分别是你的证书和密钥。

首先安装nginx

sudo apt install nginx

上传.crt和.key证书

安装好的 nginx 在 /etc/nginx 目录下,在此目录我们先创建一个ssl的目录用来存储证书。

cd /etc/nginxsudo mkdir ssl

再通过ftp或者ssh将证书的.crt和.key文件上传到 ssl 这个目录下。

故这样你的

证书路径就是 /etc/nginx/ssl/1_xxxxxxx.xxx.crt

密钥路径:/etc/nginx/ssl/2_xxxxxxxx.xxx.key

创建配置文件

在 /etc/nginx/conf.d 目录下,创建 yoursite.conf 文件,内容如下:

以下配置参考自腾讯云文档中心

server {#SSL 访问端口号为 443listen 443 ssl; #填写绑定证书的域名server_name your_domain_name; #证书文件名称即.crt文件路径ssl_certificate /etc/nginx/ssl/1_xxxxxxx.xxx.crt;#私钥文件名称即.key文件路径ssl_certificate_key /etc/nginx/ssl/2_xxxxxxxx.xxx.key; ssl_session_timeout 5m;#请按照以下协议配置ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on;location / {#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。root html; index index.html index.htm;#配置代理 因为hexo默认端口为4000,故使其指向proxy_pass http://localhost:4000;}}server {listen 80;#填写绑定证书的域名server_name your_domain_name; #把http的域名请求转成httpsreturn 301 https://$host$request_uri; }

完成后,保存并退出。

第一个 server 是配置443端口的https服务,第二个server 是使http自动跳转到Https的安全配置。

验证配置文件并重启nginx服务

在nginx根目录下,通过执行以下指令验证配置文件是否正确

sudo nginx -t

显示ok和successful则代表成功。

重启nginx服务

sudo systemctl restart nginx

检查nginx状态

systemctl status nginx

成功

到这里一切顺利的话,则代表你的配置成功了,现在已经可以通过Https访问你的网站,浏览器不会再显示不安全😏。

若有帮助,希望可以点赞收藏😁。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。