天天看點

搭建ngrok伺服器之擴充

如果伺服器<code>80</code>端口已經被占用了,可以利用<code>nginx</code>進行端口的轉發,加上如下配置即可:

vim /usr/local/nginx/conf/vhost/ngrok.XXX.com.conf

内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<code>upstream ngrok {</code>

<code>server </code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>8888</code><code>; </code><code># 此處端口要跟 啟動服務端ngrok 時指定的端口一緻</code>

<code>keepalive </code><code>64</code><code>;</code>

<code>}</code>

<code>server {</code>

<code>listen </code><code>80</code><code>;</code>

<code>server_name </code><code>*</code><code>.ngrok.XXX.com;</code>

<code>access_log </code><code>/</code><code>data</code><code>/</code><code>wwwlogs</code><code>/</code><code>ngrok.XXX.com_access.log;</code>

<code>error_log </code><code>/</code><code>data</code><code>/</code><code>wwwlogs</code><code>/</code><code>ngrok.XXX.com_error.log;</code>

<code>location </code><code>/</code> <code>{</code>

<code>proxy_set_header X</code><code>-</code><code>Real</code><code>-</code><code>IP $remote_addr;</code>

<code>proxy_set_header X</code><code>-</code><code>Forwarded</code><code>-</code><code>For $proxy_add_x_forwarded_for;</code>

<code>proxy_set_header Host $http_host:</code><code>8888</code><code>;  </code><code># 此處端口要跟 啟動服務端ngrok 時指定的端口一緻</code>

<code>proxy_set_header X</code><code>-</code><code>Nginx</code><code>-</code><code>Proxy true;</code>

<code>proxy_set_header Connection "";</code>

<code>proxy_pass http:</code><code>/</code><code>/</code><code>ngrok;</code>

重新開機nginx

service nginx reload

<code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>ngrok</code><code>/</code><code>bin</code><code>/</code><code>ngrokd </code><code>-</code><code>domain</code><code>=</code><code>"ngrok.XXX.com"</code> <code>-</code><code>httpAddr</code><code>=</code><code>":8888"</code> <code>-</code><code>httpsAddr</code><code>=</code><code>":8889"</code>

# domain填寫剛才生成證書時的 NGROK_DOMAIN

# http和https端口可以自己指定,這裡不采用80端口,是因為其他程式已經占用了,端口轉發在上面nginx已經配置完成

# 如果想要背景啟動,執行以下指令(背景啟動有多種方法,選擇其一即可)

<code>nohup </code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>ngrok</code><code>/</code><code>bin</code><code>/</code><code>ngrokd </code><code>-</code><code>domain</code><code>=</code><code>"ngrok.XXX.com"</code> <code>-</code><code>httpAddr</code><code>=</code><code>":8888"</code> <code>-</code><code>httpsAddr</code><code>=</code><code>":8889"</code> <code>&gt; </code><code>/</code><code>dev</code><code>/</code><code>null </code><code>2</code><code>&gt;&amp;</code><code>1</code> <code>&amp;</code>

# 如果想要開機啟動,在rc.local中添加以下内容,具體内容請根據自己情況自行調整

vim /etc/rc.d/rc.local

<code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>ngrok</code><code>/</code><code>bin</code><code>/</code><code>ngrokd </code><code>-</code><code>domain</code><code>=</code><code>"ngrok.XXX.com"</code> <code>-</code><code>httpAddr</code><code>=</code><code>":8888"</code> <code>-</code><code>httpsAddr</code><code>=</code><code>":8889"</code> <code>&gt; </code><code>/</code><code>var</code><code>/</code><code>log</code><code>/</code><code>ngrok.log &amp;</code>

你編譯出來的用戶端和服務端是配套使用的,你可以把你的用戶端分享給别人使用,别人隻能連接配接你的伺服器,别的伺服器是連接配接不上的。

確定linux版<code>ngrok</code>有執行權限

chmod +x ngrok

在<code>ngrok</code>程式的同級目錄下,編寫配置檔案

vim ngrok.cfg

内容如下: 

19

20

21

22

23

24

25

26

27

28

<code>server_addr: </code><code>"ngrok.XXX.com:4443"</code>

<code>trust_host_root_certs: false</code>

<code>tunnels:</code>

<code>    </code><code>test:</code>

<code>        </code><code>subdomain: </code><code>"test"</code> <code>#定義伺服器配置設定域名字首</code>

<code>        </code><code>proto:</code>

<code>        </code><code>http: </code><code>80</code> <code>#映射端口,不加ip預設本機</code>

<code>        </code><code>https: </code><code>80</code>

<code>    </code><code>web:</code>

<code>        </code><code>subdomain: </code><code>"web"</code> <code>#定義伺服器配置設定域名字首</code>

<code>        </code><code>http: </code><code>192.168</code><code>.</code><code>1.100</code><code>:</code><code>80</code> <code>#映射端口,可以通過加ip為内網任意一台映射</code>

<code>        </code><code>https: </code><code>192.168</code><code>.</code><code>1.100</code><code>:</code><code>80</code>

<code>    </code><code>web1:</code>

<code>        </code><code>hostname: </code><code>"ngrok.XXX.com"</code>

<code>        </code><code>http: </code><code>80</code>

<code>    </code><code>web2:</code>

<code>        </code><code>hostname: </code><code>"XXX.com"</code>

<code>    </code><code>ssh:</code>

<code>        </code><code>remote_port: </code><code>50001</code> <code>#伺服器配置設定tcp轉發端口,如果不填寫此項則由伺服器配置設定</code>

<code>        </code><code>tcp: </code><code>22</code> <code>#映射本地的22端口</code>

<code>    </code><code>ssh1: </code><code>#将由伺服器配置設定端口</code>

<code>        </code><code>tcp: </code><code>21</code>

啟動<code>ngrok</code>

./ngrok -subdomain test -config=ngrok.cfg 80

# 或者

./ngrok -config ngrok.cfg start test

#如果在配置檔案裡有配置多個端口映射,可以start多個

./ngrok -config ngrok.cfg start test ssh

# 如果出現問題連接配接不上,想在本地檢視日志,可加上log參數

# ./ngrok -log ngrok.log -config ngrok.cfg start test 

# 最終如果`Tunnel Status`顯示`online`則表示成功了

由于伺服器上開啟了防火牆,使用的是<code>iptables</code>,是以需要将上面的端口添加到白名單

一共3個,一個是<code>ngrok</code>自身的<code>4443</code>端口,還有自定義的<code>8888 </code>http端口,<code>8889 </code>https端口

vim /etc/sysconfig/iptables

添加以下内容

-A INPUT -m state --state NEW -m tcp -p tcp --dport 4443 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8889 -j ACCEPT

重新開機iptables

service iptables restart

如果你的伺服器是阿裡公有雲ECS,那麼你需要進行如下設定:管理控制台--ESC執行個體--管理--本執行個體安全組--配置規則--建立規則。 把服務端監聽的三個端口放行就可以了。

<a href="http://s3.51cto.com/wyfs02/M00/99/0B/wKiom1lDVAfzXCBJAABiLrRTl9E431.jpg" target="_blank"></a>

<a href="https://s1.51cto.com/wyfs02/M02/99/0E/wKiom1lDb67BasfGAADZJ_zU5Lo747.jpg-wh_500x0-wm_3-wmp_4-s_2783627963.jpg" target="_blank"></a>

下載下傳完成後直接解壓。

tar -zxvf go1.7.4.linux-amd64.tar.gz  -C /usr/local

設定環境變量,可以根據自己需要調整路徑。

vim /etc/profile

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin

export GOPATH=$HOME/go

export GOROOT_BOOTSTRAP=/usr/local/go

使變量生效

source/etc/profile

檢視是否安裝成功

go env

交叉編譯:就是在一個平台上生成另一個平台上的可執行代碼。

網上有人說:伺服器上要編譯<code>windows客戶</code>端版本時,需要進行如下設定:

cd /usr/local/go/src

GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 ./make.bash

我在别的伺服器測試過後,不用這樣也行,直接按上篇的方法直接編譯即可。

我按上面進行設定。反而會報這樣的錯:

go ./make.bash: eval: line 135: syntax error near unexpected token `(

ERROR: Cannot find /root/go1.4/bin/go.

Set $GOROOT_BOOTSTRAP to a working Go tree &gt;= Go 1.4.

報錯原因:go新版本不是用C編寫的,而1.4之前的是C編寫的,是以需要先安裝1.4的,才能編譯1.6的,于是便先安裝了1.4,再安裝1.6。

本文轉自pizibaidu 51CTO部落格,原文連結:http://blog.51cto.com/pizibaidu/1937401,如需轉載請自行聯系原作者

繼續閱讀