微信小程序和公众号,要求外链的页面或API必须使用https。https意味着需要证书,在测试阶段,很不方便,因此部署的测试站点都是http。于是尝试在现有的https站点中,用nginx转发请求到只有http的测试站点。
方法众所周知,在nginx.conf中添加一个转发规则。
server {
listen 80;
server_name 服务器IP;
。。。
}
server {
listen 443 ssl;
server_name 服务器IP;
。。。
location /test/ {#注意一定要以“/”结尾,否则 /test/*** 一律跳到/test
proxy_pass http://测试的HTTP站点IP:端口/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
这样的话,我们在小程序或公众号中用类似 https://www.abc.com/test/**** 的方式请求,nginx能为我们转发到相应的测试站点上。注意转发规则中,一定要以“/”结尾,否则 /test/*** 一律被跳到/test。
nginx真是一款神器,web服务器,代理,负载均衡,转发,我还看到有用它来缓存天地图瓦片的。几乎无所不能。还短小精悍,资源消耗极低。网上查找nginx的历史,发现没有几个小孩子扯的清,但我早在2001年的时候,就听说过它。那时候网易啊啥的互联网大站点在使用。可惜我一直睁眼瞎,缺乏好奇心和上进心,浑浑噩噩。值得一提的是,nginx是俄罗斯人写的。毛子虽然这段时间在西方成为众矢之的,但其理工类,尤其是计算机、数学简直是神一般的存在。我去年在阮一峰的每周博客上,还看到俄罗斯的联邦总理跑到大学讲解数学题。当然俄罗斯的艺术人文也很强。艺术凭直觉,理工讲求逻辑,这两个方面,战斗民族和谐统一,令人佩服。