介紹
由于前面內(nèi)網(wǎng)穿透&反向代理(奇技淫巧)有一些局限性尔崔,所以繼續(xù)研究?jī)?nèi)網(wǎng)穿透和反向代理的原理,把整個(gè)穿透和代理的過(guò)程算是捋清楚了呛伴。進(jìn)而找到了最標(biāo)準(zhǔn)勃痴、穩(wěn)定的解決方案。
這里采用frp+nginx來(lái)實(shí)現(xiàn)功能磷蜀。
安裝nginx
參考:
http://www.cnblogs.com/2bjiujiu/p/8117166.html
https://www.2cto.com/kf/201801/711202.html
- 安裝nginx的依賴(lài)
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
- 獲取壓縮包
wget -q http://nginx.org/download/nginx-1.16.0.tar.gz
- 解壓
tar -zxvf nginx-1.16.0.tar.gz
- 配置和安裝
cd nginx-1.16.0
./configure --prefix=/opt/nginx1.16.0
make
make install
ln -sf /opt/nginx1.16.0 /usr/local/nginx
echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> /etc/profile && source /etc/profile
- 測(cè)試和啟動(dòng)
nginx -t # 顯示successful
nginx # 啟動(dòng)
netstat -lntup | grep 80 # 檢查
# 打開(kāi)瀏覽器召耘,訪問(wèn) ip:80
nginx反向代理
參考:https://segmentfault.com/a/1190000016556569
nginx的反向代理是用一個(gè)端口監(jiān)聽(tīng)另一個(gè)端口百炬,比如這里已經(jīng)開(kāi)了一個(gè)80的默認(rèn)nginx服務(wù)褐隆,我想讓外面訪問(wèn)43005就相當(dāng)于訪問(wèn)80端口。即43005代理了80剖踊。
這是個(gè)基本功能庶弃,直接修改 nginx/conf/nginx.conf就好:
# 在http下加上下面這些
# listen表示外網(wǎng)訪問(wèn)的端口
# server_name是本地被訪問(wèn)的ip
# proxy_pass是被代理的ip和端口
server {
listen 43005;
server_name localhost;
location / {
proxy_pass http://localhost:80;
}
}
配置完后先測(cè)試 nginx -t
然后平滑重啟 nginx -s reload
瀏覽器訪問(wèn)106.x.x.x:43005
就會(huì)訪問(wèn)到80的服務(wù)
- 如果端口被占用
使用ps -aux | grep 8888
或者netstat –apn
查看是哪個(gè)進(jìn)程占用了端口。
然后用kill pid
把進(jìn)程殺了德澈。 - 如果要停止
pkill -9 nginx
參考:https://www.cnblogs.com/codingcloud/p/5095066.html
使用frp實(shí)現(xiàn)ssh穿透
參考:
https://github.com/fatedier/frp#access-your-computer-in-lan-by-ssh
# 下包 可以去https://github.com/fatedier/frp/releases下載最新版
wget https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_amd64.tar.gz
# 解壓
tar -zxvf frp_0.27.0_linux_amd64.tar.gz
- 修改服務(wù)端 frps.ini
[common]
bind_port = 7000 # 監(jiān)聽(tīng)的端口B
開(kāi)啟服務(wù)端./frps -c ./frps.ini
- 修改客戶(hù)端 frpc.ini
[common]
server_addr = x.x.x.x # 填寫(xiě)公網(wǎng)的server ip
server_port = 7000 #服務(wù)端監(jiān)聽(tīng)的端口B
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22 # 本地被監(jiān)聽(tīng)的端口
remote_port = 43006 # 公網(wǎng)對(duì)外的訪問(wèn)端口
開(kāi)啟客戶(hù)端./frpc -c ./frpc.ini
使用frp實(shí)現(xiàn)service穿透
- 修改frps.ini# frps.ini
[common]
bind_port = 7000
vhost_http_port = 43005
Start服務(wù)端./frps -c ./frps.ini
- 修改frpc.ini and . The local_port is the port of your web service:
[common]
server_addr = x.x.x.x # set remote frps server's IP as x.x.x.x
server_port = 7000
[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com # 沒(méi)有域名就用上面的server addr
開(kāi)啟frpc./frpc -c ./frpc.ini
- 瀏覽器訪問(wèn)ip:43005.
其他配置可以參考:https://www.xyzbeta.com/460
frp實(shí)現(xiàn)ftp
修改frpc.ini
[test_static_file]
type = tcp
remote_port = 43762
plugin = static_file
plugin_local_path = /root/test # 設(shè)置路徑
plugin_strip_prefix = static #設(shè)置域名
plugin_http_user = user
plugin_http_passwd = pwd