内网穿透 -Frp部署
无公网 IP(一般非电信运营商)的解决方案
写在前面
因为本人是小白,所以不管是服务端还是客户端均以越少使用代码越好,故
1.服务端:使用 APPNODE面板来安装和设置Frp Server端,同时 APPNODE来设置 NGINX的反向代理和强制使用 HTTPS 连接;
2.客户端:使用 DOCKER安装和设置Frp Client端;
对于有一定代码基础的朋友,可以直接去下载最新版本的 Frp,分别部属至服务端及客户端,然后通过终端命令行的模式设置FRP,类似的教程网络上很多,但由于要输入一堆命令,此方法不适合小的。
环境说明
小白用的是 APPNODE面板,同时考虑网络应用的安全性,使用了 SSL 方式进行访问,同时希望域名不带端口号,大部分人用的可能是“宝塔面板”,原理类似。
部署步骤
-
通过面板安装和设置frp服务端
-
设置服务端nginx,确保访问使用SSL模式
-
安装和设置客户端frp,保证与服务端设置相呼应
APPNODE注册地址:https://www.appnode.com/ APPNODE和宝塔都是一键安装,自选服务器环境这些共同点,小白用的是前者,使用面板的目的是图形 化的来设置服务器的服务,避免使用终端和输入代码。(实际是小白不会 :))
1.Appnode面板界面及frp服务端安装和设置
服务端设置
bindport = 7000
token = 令牌(确保安全,与客户端一致即可)
bindaddr = 0.0.0.0(代表本地)
allowports = 2000-3000,4000-50000
dashboardport = 7500
dashboarduser = admin
dashboardpwd = 管理面板密码
kcpbindport = 7000
vhosthttpport = 8080
vhosthttpsport = 8443
subdomainhost = XXX
2.设置服务器 Nginx反代,强制使用https访问
编辑 Nginx,在原有代码下,追加下述代码,保证服务端(8080),穿透至客户端应用端口(19999)并转成 Https 访问
server {
listen 80;
listen 443 ssl http2;
server_name bitwarden.phocssout.ga;
ssl_certificate 依据自身路径调整/ssl/site.crt;
ssl_certificate_key 依据自身路径调整/ssl/site.key;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:5m;
ssl_session_timeout 5m;
keepalive_timeout 75s;
keepalive_requests 100;
access_log 依据自身路径调整/log/nginx/access.log;
error_log 依据自身路径调整/log/nginx/error.log;
if ($scheme = http) {
return 301 https://$host$request_uri;
}
gzip on;
gzip_comp_level 6;
gzip_min_length 1k;
gzip_types text/plain text/css text/xml text/javascript text/x-component application/json application/javascript application/x-javascript application/xml application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host:80;
proxy_ssl_server_name on;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3. 安装和设置客户端frp
客户端设置 frpc.ini
[common]
server_addr = 服务器 IP(切记域名无效)
server_port = 7000
token = 令牌(确保安全,与服务端一致即可)
[bitwarden phocssout]
type = http
local_ip = 127.0.0.1
local_port = 19999
custom_domains = bitwarden.phocssout.ga
use_encryption = true
use_compression = true
Comments ()