1徘溢、什么是FRP
frp 是一個(gè)可用于內(nèi)網(wǎng)穿透的高性能的反向代理應(yīng)用吞琐,支持 tcp, udp, http, https 協(xié)議。主要他是一個(gè)開源的然爆。
https://github.com/fatedier/frp
http://getfrp.yzxx-soft.com/index.html
具體配置以及使用方法我這里就不過(guò)多介紹了站粟,官方文檔有詳細(xì)說(shuō)明。
本篇文章目標(biāo):
1曾雕、自定義二級(jí)域名做本地端口映射
2奴烙、要求支持80端來(lái)做微信開發(fā)調(diào)試
3、能查看端口的連接狀態(tài)
這里我貼出我的配置內(nèi)容如下:
2剖张、服務(wù)端端配置 frps.ini
假如服務(wù)端的IP地址為:121.35.99.12
[common]
bind_port = 7000
vhost_http_port = 9988 #由于80端口已暫用這里我們使用Nginx做端口映射到80端口來(lái)做微信開發(fā)的調(diào)試切诀,如何映射后文會(huì)介紹
#連接池
max_pool_count = 5
#token驗(yàn)證
privilege_token = javen
#自定義二級(jí)域名
subdomain_host = javen.abc.com
#控制面板
dashboard_port = 9999
dashboard_user = javen
dashboard_pwd = javen
#日志
log_file = ./frps.log
log_level = info
log_max_days = 3
3、客戶端配置 frpc.ini
[common]
server_addr = 121.35.99.12 # 服務(wù)器IP
server_port = 7000 # 服務(wù)器bind_port
privilege_token = javen
[web]
type = http
local_port = 8080 # 映射到本地的8080端口
subdomain = mac
# 如果不使用SSH可以將其注釋掉
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
4搔弄、自定義二級(jí)域名
在多人同時(shí)使用一個(gè) frps 時(shí)幅虑,通過(guò)自定義二級(jí)域名的方式來(lái)使用會(huì)更加方便。
通過(guò)在 frps 的配置文件中配置 subdomain_host顾犹,就可以啟用該特性倒庵。之后在 frpc 的 http、https 類型的代理中可以不配置 custom_domains炫刷,而是配置一個(gè) subdomain 參數(shù)哄芜。
只需要將 *.{subdomain_host} 解析到 frps 所在服務(wù)器。之后用戶可以通過(guò) subdomain 自行指定自己的 web 服務(wù)所需要使用的二級(jí)域名柬唯,通過(guò) {subdomain}.{subdomain_host} 來(lái)訪問自己的 web 服務(wù)认臊。
**
假如域名為:abc.com
去域名的控制面板添加解析 *.javen
到 121.35.99.12
**
5、客戶端訪問
http://mac.javen.abc.com:9988/user
映射到本地的
http://localhost:8080/user
6锄奢、Dashboard
通過(guò)瀏覽器查看 frp 的狀態(tài)以及代理統(tǒng)計(jì)信息展示失晴。
http://121.35.99.12:9999
登錄的用戶名以及密碼為服務(wù)端配置的
dashboard_user = javen
dashboard_pwd = javen
7、端口映射
這里我們使用Nginx將9988端口映射到80端口供微信開發(fā)調(diào)試使用
#user nobody;
worker_processes 2;
worker_cpu_affinity 01 10;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream wx {
ip_hash;
server localhost:8080 weight=1 max_fails=3 fail_timeout=60s;
server localhost:8088 weight=1 max_fails=3 fail_timeout=60s;
}
server {
listen 80;
server_name localhost;
access_log /home/nginxlog/wx_access.log;
location / {
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 20m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 900;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_pass http://wx;
}
}
server {
listen 80;
server_name *.javen.abc.com;
access_log /home/nginxlog/frp_access.log;
location / {
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 20m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 900;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_pass http://127.0.0.1:9988/;
}
}
server {
listen 8888;
server_name localhost;
access_log /home/nginxlog/static_access.log;
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css|apk)$
{
root /home/ftp/private;
expires 7d;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
推薦閱讀
nginx下載安裝
nginx啟動(dòng)拘央、重啟涂屁、關(guān)閉
nginx 配置詳解
nginx 配置優(yōu)化詳解
nginx 負(fù)載均衡配置
nginx安裝第三方模塊的方法
nginx+tomcat動(dòng)靜態(tài)資源分離