微信接入调试方案

转自:http://blog.lazybee.me/wechat-development/

微信接入是个很头疼的东西,主要原因是 webhook 的 url 必须是服务器地址,无法在开发机上调试。
目前为止我用的方案是在服务器上抓包在本地模拟,配合单元测试把功能开发完成后,再放到服务器上调试,但调试过程中难免要对代码做修改,体验很不好。
最近受不了这么折腾,脑洞大开地想把服务器上的请求直接 proxy 到本地,然后发现 ssh 自带了这个功能。

主要的东西就是 ssh 的 -R 参数,这里假设微信后台填的 webhook URL 是 http://wechat.lazybee.me,本地开发环境开的端口是 http://127.0.0.1:8000,整个转发流程是这个样子的

1. Nginx 把 wechat.lazybee.me 的请求转发到其它端口,比如 10000 端口。(因为 80 端口上还有其它服务在跑,不能暴力转发 80 端口所有请求)

server {
    listen 80;
    server_name wechat.lazybee.me;

    location / {
        proxy_pass http://127.0.0.1:10000;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

2. 在本地开一个到服务器的转发通道。(要求服务器开启 sshd 服务)

ssh username@lazybee.me -R 10000:127.0.0.1:8000

本地win7  cmd 中输入:
ssh -R 10000:127.0.0.1:8000 -l root 120.24.120.100
输入密码  
netstat  -na   查看是10000端口在监听

 

3. 让本地开发环境监听 8000 端口。

这样就可以直接在本地边开发边测试了,当然别忘了根据微信的规则配置 OAuth2.0网页授权 等参数。

 

####问题:css js 图片 不转发#####

查了资料  与日志,发现NGINX不转发 css js 图片  到本地端口。(查到apache 日志,只有HTML日志,没有js css 图片请求日志)

在服务器nginx vhosts 中  看到单独  (gif|jpg|jpeg|png|bmp|swf|js|css) 

我胡乱把  location ~ .*\.    改成  location ~* \.   后再把 location \  转发的语句拷过来 重启ningx  就可以正常转发了。

 

        location ~* \.(gif|jpg|jpeg|png|bmp|swf|js|css)$
        {
#               root e:\wwwroot\sv30\wwwroot;
                proxy_pass http://127.0.0.1:10000;
                proxy_set_header X-Real-IP $remote_addr;
                if (-f $request_filename) {
                        expires 1d;
                        break;
                }
                access_log on;
        }

 

 

 


何连接内网sshd服务器2008-06-14 23:46原文:[绝对原创] ssh 这个强大的工具。
(以下方法不分平台,都适用)

案例一、
内网主机 A ,开了 http,ftp ,http ,vnc,sshd,socks5,cvs 等服务。无合法 ip 地址。
外网主机 B ,开了 sshd 服务。有合法 ip : 218.xxx.xxx.xxx
我们的目的是让 B 能访问 A 上的各种服务。

步骤:

A 知道 B ip 后,先用 ssh ssh 的参数,请看 -R listen-port:host:port Forward remote port to local address-L local (本地) -R 1234:localhost:21 其实做了个“端口转发(forward)"。
意思是主机 A 把本地的 21端口(对应ftp服务)映射为 B 的1234 端口(任意未被占用),同时 A 监听 B 的1234 端口。
在 B 上用 netstat -al | grep 1234 ,你能看到这个监听连接。
任何发送到 B 1234 端口的请求将被传送到 A的 21 端口。

B 用 ftp 工具(任意,如gftp) 连本地的 1234 端口,输入 A 的 ftp 用户和密码。

ftp localhost 1234
千万不要觉的奇怪,为什么连的是本地的地址。
举个不恰当例子,相当于 A 在 B 的房间里装了个窃--听**器(监听端口),那么 B 在房间里说的话就通过窃**听*//器传送到了 A。

 

posted @ 2015-12-15 19:15  3000  阅读(483)  评论(0编辑  收藏  举报