2018年终总结与新年展望 有更新!

  |   0 评论   |   84 浏览

送走戌狗,喜迎亥猪。在新的一年里,祝大家万事如意、心想事成!

〇、工作

今年又换了新的工作,工资基本达到了所在地区行业的天花板,再想提高就不是简单的事了,需要突破瓶颈。

在新的工作单位,与新老同事的关系处的还不错,工作环境也与我之前想象的相符合,每天还有一些时间搞一下自己喜欢做的事情,除了路途远了一些基本没有太多可以挑剔的地方了。

今年老婆接了很多活计,我帮忙做了一些技术支持,但是主要还是老婆的功劳大,包括对接需求、页面设计、编码开发、实施部署等等都是老婆一个人干的,我仅仅在遇到一些技术难点时候做了有限的工作,在新的一年里,希望老婆的事业更上一层楼,毕竟我今生最大的愿望就是能吃上软饭,此处手动狗头。

一、技术

今年在技术方面实现了一些突破与提高。

Java

首先还是要谈Java方向,今年在技术方面投入最大精力的依然是这个方向。研究了SpringCloud整套微服务框架,自己搭建了一套开发的脚手架与Demo,其实已经不能算是Demo了,我实现了其中的方方面面,基本属于开箱即用的一套微服务架构代码,含基本的权限(Spring Security)、菜单、用户、角色管理、注册(含短信验证码)、登录、文件存储服务(支持阿里云OSS与本地存储通过配置切换)、短信服务(使用了网易云)、代码生成器(配置与代码模板存在数据库中、支持自定义jdbc映射关系与自定义模板)。

此处应有架构图、Visio图。

最底层使用了MySQL作为数据仓库。

H5跨平台应用

DCloud今年新推出了uniapp,支持使用vue编码开发,一键编译发布到Android、iOS、微信小程序。我使用uniapp写了一个看图APP已经上架了应用市场,uniapp虽然还是有很多坑,但是已经比DCloud过去推出的5+app强多了。

过去几年以来,前端技术架构一直在飞速更新换代,从目前市场情况看来,在国内Vue应该是一骑绝尘了,我认为目前学习Vue是一个非常成熟时机了,是时候把jQuery抛弃拥抱Vue了,目前我正在通过uniapp学习Vue,上手快、出实物也很快,是一个不错的学习途径。

爬虫

新鲜入坑的新方向,真好玩,好玩到爆。自从今年入坑之后陆续编写了不下十余个爬虫,根本停不下来,简单说几个,比如国家统计局的数据、彩票开奖数据、全国气温气象历史数据、电影评分数据、菜市场价格数据、51的招聘数据等等等等。

抓到数据之后就可以各种分析了,比如沈阳的菜价,我举几个例子。

可以看到花生油的价格非常高,几乎是大豆油的3倍。

再看看具有代表性的食品猪肉和鸡蛋的价格,从2015年至今基本都是在一个区间波动,说明其实政府对保障人民生活的基本物价控制还是比较到位的。

还比如电影评分数据,我可以抓取本地新上映的电影,然后将没看过的高分电影通过邮件推送提醒。

再比如招聘数据,我通过汇总不同地区并去除无效数据生成了平均工资按城市排序的表格,然后发现沈阳几乎排在最后面,平均工资只有四千多。

此处应有地区/工资排序图。

二、生活

闺女平安健康长大,已经升到3级了。

目前解锁了一些专业技能:

  1. 绘画:0级。
  2. 舞蹈:1级(有证书)
  3. 看人下菜碟:Max(误)

今年看看能不能再解锁几个专业技能~

专业技能好贵啊,每个都是钱堆出来的,升级还得花钱。

三、新年展望

依然希望我的闺女顺利成长,无病无灾~
希望父母和老婆都健健康康,开开心心。

还给用户一个干净整洁的上网环境,HTTPS协议的原理与应用

  |   0 评论   |   95 浏览

〇、为什么网站要使用HTTPS

这就要从ISP运营商的HTTP劫持说起了,利益让人铤而走险,广告的利益还真不小,某房产门户网站上一个广告位少则几千,多则几万。

我们身边无处不在的ISP(网络运营商)通过dns、http劫持、重写网络包强行在别人网站插入广告,对于无知的用户来讲他们反而觉得当前这个网站真垃圾,这么多广告,看似就是该网站的恶作剧一样,殊不知网站运营者根本不知道自己的网站被强行植入广告,因为ISP分不同地域、不同宽带用户、不同域名等条件来特定植入广告,网站运营者自己访问正常,从而很难发现问题。

更有甚者,某些ISP运营商强行植入的广告会使得网站变的不可用,我就经历过这种情况,某网站在手机端访问时,ISP运营商强行植入的广告挡住了菜单和按钮,使得根本不能操作,对于不明真相的用户来说,肯定要骂娘了,网站运营者属于躺枪。

一、什么是HTTPS

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种透过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。

历史上,HTTPS连接经常用于万维网上的交易支付和企业信息系统中敏感信息的传输。在2000年代晚期和2010年代早期,HTTPS开始广泛使用于保护所有类型网站上的网页真实性,保护账户和保持用户通信,身份和网络浏览的私密性。

当网站支持HTTPS协议,即可避免被恶意ISP运营商添加不良信息、使我们提供的服务完整并没有被篡改的交付到最终用户手中,无论用户使用任何ISP运营商。

二、申请证书

证书方面,我选择了Let's Encrypt。这个证书是完全免费且开源的。虽然有效期只有3个月,但是权限很高,父级证书是DST Root CA X3,在Firefox、Chrome等浏览器、安卓和iOS系统等移动设备上都可以正常识别。

在2018年3月份,Let's Encrypt终于支持了通配符格式证书,这是一个伟大的进步,Let's Encrypt证书在易用性方面除了有效期外与每年几千元人民币的商用证书已经没有任何区别。

申请地址:https://www.sslforfree.com/

打开Let's Encrypt首页,在输入框中输入你的域名,其中包含根域名和通配符域名,如图所示:

点击Create Free SSL Certificate进入下一步,如图所示:

提示,如果你想创建通配符证书,必须通过域名DNS方式验证你是该域名的所有者,我们不用管,直接点击Retry Manual Verification进入下一步。

这时,按照提示的信息配置你的域名,增加两条TXT记录(分别是根域名和通配符域名),我用的是阿里云的域名服务,配置完成后如下图所示:

配置完成后点击Download SSL Certificate,这时候它会去验证你配置的TXT记录是否存在,所以建议配置完成后稍等几分钟再点击下载,验证成功后会跳转到如下图所示页面:

这个时候就可以真正下载证书了,点击Download All SSL Certificate Files按钮进行下载,下载后的文件是一个zip压缩包,里面包含三个文件,分别是certificate.crt、ca_bundle.crt和private.key。

三、部署证书并启用

我的系统环境:
  • 系统:Windows Server
  • 容器:Apache、Tomcat、GoRuntime
  • 前置:Nginx
我的后台软件环境比较复杂,其中包括一个php的个人博客(wordpress)、一个基于go语言的git源代码仓库(gogs)、和我自己编写的大量Java语言的SpringCloud服务。他们的一级域名都是liuxp.me,使用不同的二级域名来区别不同的服务,使用了Nginx作为前置机进行反向代理,具体配置可以参考我的另一篇文章《使用nginx建立反向代理》。

在使用通配符证书时,建议在Nginx前置机中进行配置,这样可以极大的简化配置难度,且易于维护。

将下载好的证书文件拷贝到Nginx的conf文件夹中,如图所示:

重点:其中的new.crt文件,该文件是我们把certificate.crt和ca_bundle.crt合并后的文件(打开certificate.crt和ca_bundle.crt,复制其中内容到新建的new.crt中,注意certificate.crt的内容在前,ca_bundle.crt的内容在后)

打开conf配置文件,引用证书路径(注意引用的是我们自己新建的new.crt文件和private.key文件),每个server如果要支持ssl必须都进行引用配置,如下所示:

上面是我的两个web服务,一个是source.liuxp.me,另一个是observer.liuxp.me,都分别引用了证书文件,并且配置ssl选项为on。

强制整站开启https,当访客使用http进入时,自动转换为https地址,增加一行配置即可,如下所示:

将其中的liuxp.me改为你自己的域名即可。

不想自己打字的可以下载我的Nginx配置文件然后改一改。

最后,重启Nginx就生效啦~~~

四、总结

本文仅介绍了手动部署证书的方法,其实Let's Encrypt支持自动部署证书的方式,有多个开源项目支持,以后我会再介绍自动部署的方法。
原创文章,版权归作者刘小平所有,在保留作者姓名与原文地址的情况下允许转载。

使用nginx建立反向代理

  |   0 评论   |   94 浏览

〇·前言

现在网上各种云主机都非常便宜,在云主机上建站的时候,我们可能会在一台主机上部署多个站点并绑定不同的一级或二级域名,并且多个站点可能使用不同编程语言编写的,比如我目前的主机上放置了一个GO语言的代码管理平台、一个PHP语言的主页、一个JAVA的监控平台,他们分别需要不同的容器来启动,那么如何才能使用一个主机(IP地址相同)配置成不同的域名访问不同的容器呢?

这时,就需要nginx来出手相助了。nginx是一个小巧并功能强大的代理服务器,通常用来做负载均衡或正、反向代理等服务,我们这篇文章就要介绍到其中的反向代理功能。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 -引用自百度百科

一·下载 & 安装

访问Nginx官方网站https://nginx.org,点击download进入https://nginx.org/en/download.html页面,如图所示:

其中Mainline version是测试版,Stable version是稳定版,Legacy versions是历史版本。建议下载Stable version稳定版,Nginx同时支持Linux和Windows系统,选择符合自己操作系统的版本即可。

文章中下载的是Windows的稳定版,下载后是一个压缩包,解压缩后如图所示:

启动的话,直接运行nginx.exe即可,无需安装。

二·配置

找到nginx.conf配置文件并打开,如图所示:

首先,删除原server配置。

然后添加我们server反向代理配置信息如下:

server {
	listen       80;
	server_name  liuxp.me;
	location / {
		proxy_pass http://101.200.57.209:8080; 
		proxy_set_header   Host    $host; 
		proxy_set_header   X-Real-IP   $remote_addr; 
		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; 
	}
}

这段配置代表监听80端口的liuxp.me域名,将其中所有请求反向代理到指定IP地址的8080端口。

server可以配置多个,我们再配置另一个反向代理,如下:

server {
	listen       80;
	server_name  source.liuxp.me;
	location / {
		proxy_pass http://127.0.0.1:3000;
		proxy_set_header   Host    $host;
		proxy_set_header   X-Real-IP   $remote_addr;
		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
		client_max_body_size 128M;
	}
}

这段配置代表监听80端口的source.liuxp.me域名,将其中所有请求反向代理到指定IP地址的3000端口,注意其中的client_max_body_size配置项,这个配置项的含义是http请求体的最大长度,由于我代理的3000端口服务是代码管理服务,经常传一些大文件,所以配置成了128M。大家在代理一些请求体可能比较大的服务的时候,建议添加该配置项。

配置完成的nginx.conf文件如图所示:

三·启动

配置好后,双击Nginx.exe,会一闪而过一个cmd窗口,然后就什么反应也没有了。这时Nginx其实已经启动了,打开任务管理器,我们可以看到两个nginx进程,一个是主进程,一个是工作进程。存在两个nginx进程则代表我们已经正常启动了nginx。

打开浏览器访问我们配置好的地址,应该就可以正常看到被代理的服务了。至此,我们的反向代理就成功配置并生效了。

原创文章,版权归作者刘小平所有,在保留作者姓名与原文地址的情况下允许转载。