轶哥博客

妄图改变世界的全栈程序员。

配置自动续期的免费通配符SSL证书

公益SSL证书机构Let’s Encrypt从2018-03-13起开始支持通配符证书。通配符证书必须通过DDNS添加TXT记录验证域名所属权。

  1. certbot官网安装certbot。

  2. 安装DNS插件

    cerbot支持很多DNS插件,例如:

     certbot-dns-cloudflare
     certbot-dns-cloudxns
     certbot-dns-digitalocean
     ...

    这里以DNSPOD(腾讯云域名默认DNS)为例:

     git clone https://github.com/tengattack/certbot-dns-dnspod
     cd certbot-dns-dnspod
     sudo python setup.py install
Nginx 解决API跨域问题

利用Nginx可以最简单且高效解决跨域问题。

跨域是前后端分离开发中非常常见的问题。这个问题网上已经有非常多的答案,但大部分是编程框架里面添加CORS头。但无论用什么Web框架,现已很难离开Nginx。因此直接在Nginx中处理跨域问题有得天独厚的优势,可以将OPTIONS请求拦截在API服务之前,节约服务器开销。

简单说,跨域分为简单跨域复杂跨域

简单跨域不会发送OPTIONS请求。

复杂跨域会发送一个预检查OPTIONS请求。

复杂跨域的条件是:

  1. 非GET、HEAD、POST请求。
  2. POST请求的Content-Type不是application/x-www-form-urlencoded, multipart/form-data, 或text/plain
  3. 添加了自定义header,例如Token

跨域请求浏览器会在Headers中添加Origin,通常情况下不允许用户修改其值。

Vue SSR( Vue2 + Koa2 + Webpack4)配置指南

正如Vue官方所说,SSR配置适合已经熟悉 Vue, webpack 和 Node.js 开发的开发者阅读。请先移步 ssr.vuejs.org 了解手工进行SSR配置的基本内容。

从头搭建一个服务端渲染的应用是相当复杂的。如果您有SSR需求,对Webpack及Koa不是很熟悉,请直接使用NUXT.js

本文所述内容示例在 Vue SSR Koa2 脚手架https://github.com/yi-ge/Vue-SSR-Koa2-Scaffold

我们以撰写本文时的最新版:Vue 2,Webpack 4,Koa 2为例。

特别说明
此文描述的是API与WEB同在一个项目的情况下进行的配置,且API、SSR Server、Static均使用了同一个Koa示例,目的是阐述配置方法,所有的报错显示在一个终端,方便调试。

巧用Koa接管“对接微信开发”的工作 - 多用户微信JS-SDK API服务

涉及微信开发的技术人员总会面对一些“对接”工作,每当做好一个产品卖给对方的时候,都需要程序员介入进行一些配置。例如:

  1. 使用“微信JS-SDK”的应用,我们需要添加微信公众号“JS接口安全域名”。

  2. 为了解决微信页面安全提示,我们需要添加微信公众号“业务域名”。

  3. 为了在小程序中使用WebView页面,我们需要添加微信小程序“业务域名”。

以上三种情况都不是简单的将域名填入到微信管理后台,而是需要下载一个txt文件,保存到服务器根目录,能够被微信服务器直接访问,才能正常保存域名。

如果只需要对接一个或几个应用,打开Nginx配置,如下添加:

location /YGCSYilWJs.txt {
    default_type text/html;
    return 200 '78362e6cae6a33ec4609840be35b399b';
}

假如有几十个甚至几百个项目需要接入😂。

让我们花20分钟彻底解决这个问题。

进行域名泛解析:*.abc.com -> 服务器,反向代理根目录下.txt结尾的请求。顺便配置一下通配符SSL证书(网上有免费版本)。

MacOS Mojave 10.14 (18A391) Nvidia Web Driver Notice

由于 MacOS Mojave 10.14 (18A391) 版本的 NVIDIA 显卡 WEB 驱动一直没有发布,其中缘由不能说。因此忙里抽闲用PHP迅速的搭建了一个监控平台,并做成多用户版本。

系统每隔15s会自动检测一次列表,如果发现有新版本发布,则会发送邮件及手机短信通知,方便广大N卡用户。

访问地址:https://driver.wyr.me,填入邮箱或手机号即可。

手机短信收取成本费0.5元人民币,源代码开源:https://github.com/yi-ge/mac-nvidia-web-driver-notice

无刷新微信扫码登陆解决方案

  数天前,为解决微信二维码扫码登陆在Electorn跳转处理繁琐的问题,写一个微信开放平台扫码登陆解析处理工具😊,将frame数据处理为图片或Base64图片数据返回客户端进行扫码。解决Chrome70中open.weixin.qq.com腾讯SSL证书不被信任的问题(微信官方于2018年8月23日更换了域名证书),解决Chrome68中frame跨域被拦截的问题。

此方案最大特点扫码登录无跳转🤠。

Node.js 版本 Demohttps://weixin.openapi.site/demo

PHP 版本 Demohttps://apio.xyz/weixin-login-php/

须知

  此方案仅适用于微信开放平台-网站应用。Node.js版本使用ES6语法,支持Node.js 9+(更低的版本也可能支持,使用的原生库),写法遵循standard规范。

Node.js 获取项目根目录

  介绍一个小技巧获取node.js项目根目录,这个技巧非常实用。

  假设我们的js文件写在server目录中,但是我们的资源文件存储在app/img目录中。如下图,我们需要在server/index.js文件中使用fs读取app/img/favicon.ico文件。

获取node项目根目录

  在node.js只提供了一个__dirname全局变量。通过__dirname可以获得“C:\wwwroot\yidata\server”。这时需要用到path。

  上一页下一页