搭建ngrok服務器之擴展

說明

瞭解本文之前,請先閱讀前兩篇博文。不然會感覺不知所云。本文主要是在前兩篇基礎上進行發散思維擴展及本博主遇到的一些問題。希望對其他人有幫助,讓你少走彎路。

 

nginx端口轉發

如果服務器80端口已經被佔用了,可以利用nginx進行端口的轉發,加上如下配置即可:

 

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

內容如下:

upstream ngrok {
server 127.0.0.1:8888; # 此處端口要跟 啓動服務端ngrok 時指定的端口一致
keepalive 64;
}
server {
listen 80;
server_name *.ngrok.XXX.com;
access_log /data/wwwlogs/ngrok.XXX.com_access.log;
error_log /data/wwwlogs/ngrok.XXX.com_error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host:8888;  # 此處端口要跟 啓動服務端ngrok 時指定的端口一致
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://ngrok;
}
}

重啓nginx

service nginx reload

 

關於ngrok服務端

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

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

# http和https端口可以自己指定,這裏不採用80端口,是因爲其他程序已經佔用了,端口轉發在上面nginx已經配置完成

 

# 如果想要後臺啓動,執行以下命令(後臺啓動有多種方法,選擇其一即可)

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

 

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

vim /etc/rc.d/rc.local

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

 

關於ngrok客戶端

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


確保linux版ngrok有執行權限

chmod +x ngrok


ngrok程序的同級目錄下,編寫配置文件

vim ngrok.cfg

內容如下:

server_addr: "ngrok.XXX.com:4443"
trust_host_root_certs: false
tunnels:
    test:
        subdomain: "test" #定義服務器分配域名前綴
        proto:
        http: 80 #映射端口,不加ip默認本機
        https: 80
    web:
        subdomain: "web" #定義服務器分配域名前綴
        proto:
        http: 192.168.1.100:80 #映射端口,可以通過加ip爲內網任意一臺映射
        https: 192.168.1.100:80
    web1:
        hostname: "ngrok.XXX.com"
        proto:
        http: 80
    web2:
        hostname: "XXX.com"
        proto:
        http: 80
    ssh:
        remote_port: 50001 #服務器分配tcp轉發端口,如果不填寫此項則由服務器分配
        proto:
        tcp: 22 #映射本地的22端口
    ssh1: #將由服務器分配端口
        proto:
        tcp: 21




啓動ngrok

./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`則表示成功了

 

 

服務端防火牆

由於服務器上開啓了防火牆,使用的是iptables,所以需要將上面的端口添加到白名單

一共3個,一個是ngrok自身的4443端口,還有自定義的8888 http端口,8889 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實例--管理--本實例安全組--配置規則--創建規則。 把服務端監聽的三個端口放行就可以了。

clip_p_w_picpath002

 

 

go語言環境安裝

上篇中介紹了yum安裝方法。此處是手動安裝。根據自己的系統下載安裝包,下載地址http://www.golangtc.com/download

 

wKiom1lDb67BasfGAADZJ_zU5Lo747.jpg-wh_50

下載完成後直接解壓。

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


ngrok的交叉編譯

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


網上有人說:服務器上要編譯windows客戶端版本時,需要進行如下設置:

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 >= Go 1.4.

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章