Blame view

library/01-首页/07-amWiki转接到任意域名进行接口测试.md 3.43 KB
05c5f7f1   liuqimichale   init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  # amWiki 转接到任意域名进行接口测试
  
  我们分两种情况进行文档转接,一种是我们有域名服务器操作权限,一种是没有
  
  ## 有域名服务器操作权限的转接
  如果我们有域名服务器操作权限,那要把其他域名下的文档转接到当前域名下,其实很简单,就是一个 **反向代理** 的过程  
  
  以 nginx 为例,将地址 https://amwiki.xf09.net/docs/ 下所有文档转接到任意域名(_无需https_) /wiki 路径下
  ```nginx
  server {
      listen       81;
      server_name  abc123.com;
      location /wiki {
          proxy_pass https://amwiki.xf09.net/docs/;
          proxy_redirect     off;
          #proxy_set_header   Host             $host;
          proxy_set_header   X-Real-IP        $remote_addr;
          proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          proxy_max_temp_file_size   0k;
          proxy_connect_timeout      90;
          proxy_send_timeout         90;
          proxy_read_timeout         90;
          proxy_buffer_size          4k;
          proxy_buffers              4 32k;
          proxy_busy_buffers_size    64k;
          proxy_temp_file_write_size 64k;
      }
      # other settings ...
  }
  ```
  
  ## 无域名服务器操作权限
  此时,如果想要将我们的文档转接到对应域名上去,需要利用抓包工具 Fiddler 进行 **请求代理**  
  (_请下载安装抓包工具 [Fiddler](http://www.telerik.com/fiddler),并了解 AutoResponder 面板的使用_)
  
  由于 https 特殊性,我们分两种情况来讨论:  
  
  ### http 请求代理
  当原域名基于 http 通信时,由于 http 请求是一种很开放的通信,我们可以直接用 fiddler 非常简单的进行转接  
  
  比如,我们继续把地址 https://amwiki.xf09.net/docs/ 下所有文档转接到任意域名 /wiki 路径下  
  只需要如下配置 AutoResponder:   
  
  ![](https://amwiki.xf09.net/docs/assets/001.tiny/07-c1ef9812.png)  
  规则代码如下:
  
      regex:.+abc123\.com\/wiki\/(.+)$
      https://amwiki.xf09.net/docs/$1
  
  第一行代码为请求匹配,其中 `regex:` 表示按正则表达式进行匹配,`.+abc123\.com\/wiki\/` 表示需要代理的路径,`(.+)$` (和第二行配合)表示转接后续的路径,即将后续路径替换到第二行代码中的 `$1`  
  
  | | 转接地址 | 实际请求地址 |
  | : ---| :--- | :--- |
  | 例1 | http://abc123.com/wiki/index.html | https://amwiki.xf09.net/docs/index.html |
  | 例2 | http://abc123.com/wiki/amWiki/js/amWiki.js | https://amwiki.xf09.net/docs/amWiki/js/amWiki.js |
  
  ### https 请求代理
  当原域名基于 https 通讯是,我们需要更多的操作才能使用代理 (Fiddler 抓包 https 的原理,有兴趣可自行知乎一下)    
  
  - **第一步,开启 https 解码**  
    Tools -> Fiddler Options -> HTTPS -> 依次勾选如下  
    ![](https://amwiki.xf09.net/docs/assets/001.tiny/07-ea6ad78e.png)  
  - **第二步,是安装 Fiddler 根证书**  
    打开 http://localhost:8888/ 下载Fiddler 根证书并安装  
    ![](https://amwiki.xf09.net/docs/assets/001.tiny/07-c59334fc.png)  
  - **第三步,按照 http 的方式进行代理**  
    例如,我们转接到百度域名的一个路径下
  
          regex:.+www\.baidu\.com\/wiki\/(.+)$
          https://amwiki.xf09.net/docs/$1
  
    此时,我们打开 https://www.baidu.com/wiki/index.html 会发现,不再是“很抱歉,您要访问的页面不存在!”了