您好,登錄后才能下訂單哦!
如果服務器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
/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 &
你編譯出來的客戶端和服務端是配套使用的,你可以把你的客戶端分享給別人使用,別人只能連接你的服務器,別的服務器是連接不上的。
確保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端口 ssh2: #將由服務器分配端口 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實例--管理--本實例安全組--配置規則--創建規則。 把服務端監聽的三個端口放行就可以了。
上篇中介紹了yum安裝方法。此處是手動安裝。根據自己的系統下載安裝包,下載地址http://www.golangtc.com/download
下載完成后直接解壓。
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
交叉編譯:就是在一個平臺上生成另一個平臺上的可執行代碼。
網上有人說:服務器上要編譯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。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。