Nginx 关闭Google weblight 访问

Google weblight 说的很好听,可以让较慢网速的人访问你的网站,但是也有他自身的不足: 严重影响你的广告收入.

因此很多人都会想法去关闭Google weblight的访问.

Google weblight的网站给出方案,就是在header里面添加Cache-Control: no-transform. Google 看到这个header,就会展示原网页.

一个小知识, 按照RFC 7230, 3.2.2. Field Order里面所说,你可以在header里面添加多个Cache-Control,只要他们的field-value pair是不一样的,多个Cache-Control就是有效的.

比如说:

Cache-Control: no-cache, no-store, private
Cache-Control: no-cache

这是有效的,会被浏览器认为是:

Cache-Control: no-cache, no-store, private, no-cache

这个明白了以后, 在nginx中关闭Google Weblight 访问就很简单了. Google weblight使用的UA为

Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko; googleweblight) Chrome/38.0.1025.166 Mobile Safari/535.19

关键字符”googleweblight”, 因此我们只需要对含有googleweblight字符的UA的访问,添加header “Cache-Control: no-transform”就好了

下面上配置代码:

在Nginx http block 里面添加map 命令:

map $http_user_agent $cache_no_transform { 
"~*googleweblight" "no-transform"; 
}

然后在server block 或者 location block 里面添加:

add_header Cache-Control $cache_no_transform;

就可以了. 

一个小知识, Nginx 的add_header命令,如果value为空的话,默认是会忽略的. 因此

add_header Cache-Control '';

其实是会被nginx忽略的.

 

ESXi 6.7升级到7.0

这个属于ESXi的大版本升级,所以一般用两种方式: Cli 直接升级或者用vCSA Life Cycle Manager 用创建baseline 的方式升级

用cli的方式升级前面的文章已经写过了,因此这篇文章主要用来说以下用vCSA 的Life Cycle Manager 的方式升级

大概步骤也很简单,主要就是import ISO创建baseline, 然后相应的ESXi Host 选择baseline进行升级.

可以借鉴下面的两篇文章:

https://virtualg.uk/upgrade-esxi-6-7-to-7-0-lifecycle-manager-vlm/ 
https://www.nakivo.com/blog/how-to-upgrade-from-vmware-vsphere-esxi-6-7-to-7-0/

 

三星S20+ 安装Play Store

今天下午手贱,点了手机系统更新,结果更新完以后Play Store没有了,国区的固件确实有这个毛病.

三星的手机框架齐全,只需要自己去apkpure 或者apkmirror上下载一个最新的play store apk 就可以了. 

但是版本问题又让我迷糊了半天.

我下载的是这个版本:

Google Play Store 26.9.22-21 [0] [PR] 394273994 (82692210)
Update on: 2021-09-03

App uploaded by: Google LLC

Requires Android: Android 5.0+ (Lollipop, API 21)

Signature: 38918a453d07199354f8b19af05ec6562ced5788 Google Play Store 26.9.22-21 [0] [PR] 394273994(82692210) safe verified

Screen DPI: nodpi

Architecture: arm64-v8a, armeabi-v7a, x86, x86_64

File SHA1: f78f5d812a9ed0aa68fcb869020c930f79d9247b

File Size: 44.8 MB

[0] 表示对所有的硬件(相对应的, [5]表示可穿戴andorid设备, [8]代表andorid TV)

26.9.22 代表play store 的版本, 没什么好说的,22这一列迭代的很快

[21]  表示的是只支持API21以上(相对应的,还有[19], 表示API19),现在的机器直接选择[21]就可以了

Nginx 中获取cloudflare保护的网站的访问者的真正IP

一般来说,有三个参数可以使用:

  1. CF-Connecting-IP, 在nginx log中为 cf-connecting-ip.
  2. True-Client-IP, 仅给Cloudflare 企业用户使用,在nginx log中为true-client-ip
  3. X-Forwarded-For, 在nginx log 中比较常见,为x-forwarded-for. X-Forwarded-For 其实是一个数组,按顺序记录了用户的真正的IP和用户使用的Proxy.

举例说明:

X-Forwarded-For: 203.0.113.1 

这个表示用户的真实IP是203.0.113.1

X-Forwarded-For: 198.51.100.101,198.51.100.102,203.0.113.1

这个表示用户的真实IP是203.0.113.1,然后依次经过了198.51.100.102和198.51.100.101代理,然后才访问到了CF的edge 节点

综上所述, CF 推荐使用CF-COnnecting-IP 和 True-Client-IP 两种header,因为他们能够保证他们的value只有一个IP

用cli的方式升级ESXi 6.7 到7.0 2c

ESXi 跨越大版本(比如说6.5到6.7,6.7到7)的升级,总的来说有两种方式. 一种是通过vCSA 的Life Cycle Manager 来import ISO,设定好baseline 来升级. 另外一种就是通过cli 的方式来直接升级. (通过ISO文件启动来升级的方式比较少见)

什么情况下用的到cli的方式来升级呢? 比如说vCSA 所在的ESXi 的host 需要升级,或者说你没有使用vCSA,而只是使用single ESXi host 等等

下面就详细说以下Cli 的升级方式.

Cli 升级也分为两种方式, 一种是offline 升级,一种是online升级. 不管是offline还是online, 首先都需要关闭ESXi host上的所有VM,方便进入maintenance 模式

命令参数:  -p 代表 profile,  -d 代表depot

Offline 升级:

  1. 从my.vmware.com上下载offline 升级的bundle, 如下图,选择Vmware vSphere Hypervisor(ESXi) Offline Bundle. 下载完了一定要注意验证md5

      2.ESXi host上面打开SSH, 把bundle 文件上传到datastore

      3.检查这个offline bundle中的可用的profile, 一般选择standard 结尾的那个profile, no-tools结尾的一般用于pxe

esxcli software sources profile list -d /vmfs/volumes/datastore1/ISOs/VMware-ESXi-7.0U2a-17867351-depot

       这里我们选择    ESXi-7.0U2a-17867351-standard

4. Dry-run upgrade, 看看那些VIBs会被移除和新增

esxcli software profile update -p ESXi-7.0U2a-17867351-standard -d /vmfs/volumes/datastore1/ISOs/VMware-ESXi-7.0U2a-17867351-depot --dry-run

      5.设置ESXi host进入maintenance mode

esxcli system maintenanceMode set –enable true

      6. 升级

esxcli software profile update -p ESXi-7.0U2a-17867351-standard -d /vmfs/volumes/datastore1/ISOs/VMware-ESXi-7.0U2a-17867351-depot

       7. 设置ESXi 退出maintenance mode

esxcli system maintenanceMode set --enable false

       8. 重启

reboot

 

Online升级: 

  1. ESXi host 进入maintenance 模式
esxcli system maintenanceMode set --enable true

      2. 防火墙里打开http traffic

esxcli network firewall ruleset set -e true -r httpClient

      3. 在VM repo上检查ESXi 7.0 可用的profiles

esxcli software sources profile list -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml | grep ESXi-7.0

查询需要一定的时间, 然后如上面的offline 升级一样,会列出可用的profile,我们这里选择最新的以standard结尾的profile

ESXi-7.0U2d-18538813-standard

       4. dry-run检查

esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-7.0U2d-18538813-standard --dry-run

      5. 正式升级

esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-7.0U2d-18538813-standard

需要一定的时间来完成,这个时候安心等待就可以

从6.X升级到7的时候,有的时候会出现下面的错误提示:

Got no data from process: LANG=en_US.UTF-8 /usr/lib/vmware/esxcli-software profile.update -d "https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml" -p "ESXi-7.0U2d-18538813-standard"

这是因为你的ESXi Host上没有一个static scratch分区. 要不然就按照下面的方法来设置static scratch分区:

Enabling ESXi Persitent Scratch Partition

要不然就直接先用offline升级的方式升级到7.0,然后在用Cli 或者其他的方法升级到最新的7.X ESXi版本. 这是因为在ESXi 7 中,使用scratch 的方式发生了变化. 我建议使用offline 的方式,因为offline 的方式升级速度非常的快!

     6. 恢复原来的防火墙设置

esxcli network firewall ruleset set -e false -r httpClient

     7. ESXi host退出maintenance模式

esxcli system maintenanceMode set --enable false

     8. 重启

reboot

vCSA 6.7 升级到vCSA 7.0 (大版本升级)

vCSA的升级分为两种:

一个是大版本的升级,比如说6.5升级到6.7, 6.7升级到7.0. 这个时候就需要挂载新的vCenter 的ISO, 运行里面的installer.exe 来进行GUI升级,一步一步的按照步骤来做就可以了

一个是小版本的升级, 比如说7.02a 升级到7.02c之类的,其实就是打了一个小的patch, 这个时候就简单多了,直接进入VAMI界面, 也就是https://VCSA-ip:5480, 选择左下方的update 就可以了,选择好版本号,就可以便利的进行升级了.

小版本的升级可以参阅这篇文章:

https://virtualg.uk/how-to-upgrade-to-vmware-vcenter-server-vcsa-7-0-update-2/

这篇文章我们主要说vCSA 6.7升级到7.0, 也就是大版本升级的一般步骤.

千万要记住,一定要先升级vCSA, 然后再升级ESXi.

也即是说vCSA的版本一定要比ESXi高. 举个例子,7.0U2的 vCSA 可以连接6.7U3 的ESXi。 但是6.7U3的vCSA是无法连接7.0U2的ESXi的.

大概的升级过程,可以参见这篇文章:

https://www.crazycen.com/vmware/1660.html

英文版:

https://miketabor.com/how-to-upgrade-vcenter-server-appliance-6-7-to-7-0/

需要注意的是, vCenter Server一定通过VAMI打开SSH Access, 升级过程中需要用到

另外一点就是, 你可以会遇到下面两个错误提示:

Exception in invoking authentication handler unidentifiable C++ exception
no healthy upstream

这两个error常发生在vCSA升级完自动升级完,跳转回登录界面, 然后你登录了,有的时候就会出现上面的错误.

原因很简单,其实vCSA的升级还没有完全完成. 你可以去上个厕所,泡个咖啡什么的休息以下. 然后再刷新这个页面,重新登录就可以了