Skip to content

Commit

Permalink
Merge pull request fatedier#360 from fatedier/doc
Browse files Browse the repository at this point in the history
update doc
  • Loading branch information
fatedier authored Jun 11, 2017
2 parents fca7f42 + 66120fe commit 32f8745
Show file tree
Hide file tree
Showing 3 changed files with 192 additions and 5 deletions.
99 changes: 96 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ frp is a fast reverse proxy to help you expose a local server behind a NAT or fi
* [Access your computer in LAN by SSH](#access-your-computer-in-lan-by-ssh)
* [Visit your web service in LAN by custom domains](#visit-your-web-service-in-lan-by-custom-domains)
* [Forward DNS query request](#forward-dns-query-request)
* [Forward unix domain socket](#forward-unix-domain-socket)
* [Connect website through frpc's network](#connect-website-through-frpcs-network)
* [Features](#features)
* [Dashboard](#dashboard)
* [Authentication](#authentication)
Expand All @@ -32,10 +34,12 @@ frp is a fast reverse proxy to help you expose a local server behind a NAT or fi
* [Custom subdomain names](#custom-subdomain-names)
* [URL routing](#url-routing)
* [Connect frps by HTTP PROXY](#connect-frps-by-http-proxy)
* [Plugin](#plugin)
* [Development Plan](#development-plan)
* [Contributing](#contributing)
* [Donation](#donation)
* [AliPay](#alipay)
* [Wechat Pay](#wechat-pay)
* [Paypal](#paypal)

<!-- vim-markdown-toc -->
Expand Down Expand Up @@ -143,7 +147,7 @@ However, we can expose a http or https service using frp.

### Forward DNS query request

1. Modify frps.ini, configure a reverse proxy named [dns]:
1. Modify frps.ini:

```ini
# frps.ini
Expand Down Expand Up @@ -178,6 +182,69 @@ However, we can expose a http or https service using frp.

`dig @x.x.x.x -p 6000 www.goolge.com`

### Forward unix domain socket

Using tcp port to connect unix domain socket like docker daemon.

1. Modify frps.ini:

```ini
# frps.ini
[common]
bind_port = 7000
```

2. Start frps:

`./frps -c ./frps.ini`

3. Modify frpc.ini:

```ini
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock
```

4. Start frpc:

`./frpc -c ./frpc.ini`

5. Get docker version by curl command:

`curl http://x.x.x.x:6000/version`

### Connect website through frpc's network

Configure frps same as above.

1. Modify frpc.ini:

```ini
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
```

4. Start frpc:

`./frpc -c ./frpc.ini`

5. Set http proxy `x.x.x.x:6000` in your browser and visit website through frpc's network.

## Features

### Dashboard
Expand Down Expand Up @@ -360,20 +427,42 @@ frpc can connect frps using HTTP PROXY if you set os environment `HTTP_PROXY` or

```ini
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
http_proxy = http://user:[email protected]:8080
```

### Plugin

frpc only forward request to local tcp or udp port by default.

Plugin is used for providing rich features. There are built-in plugins such as **unix_domain_socket**, **http_proxy** and you can see [example usage](#example-usage).

Specify which plugin to use by `plugin` parameter. Configuration parameters of plugin should be started with `plugin_`. `local_ip` and `local_port` is useless for plugin.

Using plugin **http_proxy**:

```ini
# frpc.ini
[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
plugin_http_user = abc
plugin_http_passwd = abc
```

`plugin_http_user` and `plugin_http_passwd` are configuration parameters used in `http_proxy` plugin.


## Development Plan

* Log http request information in frps.
* Direct reverse proxy, like haproxy.
* Load balance to different service in frpc.
* Frpc can directly be a webserver for static files.
* Full control mode, dynamically modify frpc's configure with dashboard in frps.
* P2p communicate by make udp hole to penetrate NAT.
* Client Plugin (http proxy).
* kubernetes ingress support.


Expand All @@ -398,6 +487,10 @@ frp QQ group: 606194980

![donation-alipay](/doc/pic/donate-alipay.png)

### Wechat Pay

![donation-wechatpay](/doc/pic/donate-wechatpay.png)

### Paypal

Donate money by [paypal](https://www.paypal.me/fatedier) to my account **[email protected]**.
98 changes: 96 additions & 2 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp
* [通过 ssh 访问公司内网机器](#通过-ssh-访问公司内网机器)
* [通过自定义域名访问部署于内网的 web 服务](#通过自定义域名访问部署于内网的-web-服务)
* [转发 DNS 查询请求](#转发-dns-查询请求)
* [转发 Unix域套接字](#转发-unix域套接字)
* [通过 frpc 所在机器访问外网](#通过-frpc-所在机器访问外网)
* [功能说明](#功能说明)
* [Dashboard](#dashboard)
* [身份验证](#身份验证)
Expand All @@ -30,10 +32,12 @@ frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp
* [自定义二级域名](#自定义二级域名)
* [URL 路由](#url-路由)
* [通过代理连接 frps](#通过代理连接-frps)
* [插件](#插件)
* [开发计划](#开发计划)
* [为 frp 做贡献](#为-frp-做贡献)
* [捐助](#捐助)
* [支付宝扫码捐赠](#支付宝扫码捐赠)
* [微信支付捐赠](#微信支付捐赠)
* [Paypal 捐赠](#paypal-捐赠)

<!-- vim-markdown-toc -->
Expand Down Expand Up @@ -179,6 +183,71 @@ DNS 查询请求通常使用 UDP 协议,frp 支持对内网 UDP 服务的穿

`dig @x.x.x.x -p 6000 www.goolge.com`

### 转发 Unix域套接字

通过 tcp 端口访问内网的 unix域套接字(和 docker daemon 通信)。

1. 修改 frps.ini 文件:

```ini
# frps.ini
[common]
bind_port = 7000
```

2. 启动 frps:

`./frps -c ./frps.ini`

3. 修改 frpc.ini 文件,启用 unix_domain_socket 插件:

```ini
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock
```

4. 启动 frpc:

`./frpc -c ./frpc.ini`

5. 通过 curl 命令查看 docker 版本信息

`curl http://x.x.x.x:6000/version`

### 通过 frpc 所在机器访问外网

frpc 内置了 http proxy 插件,可以使其他机器通过 frpc 的网络访问互联网。

frps 的部署步骤同上。

1. 修改 frpc.ini 文件,启用 http_proxy 插件:

```ini
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
```

4. 启动 frpc:

`./frpc -c ./frpc.ini`

5. 浏览器设置 http 代理地址为 `x.x.x.x:6000`,通过 frpc 机器的网络访问互联网。

## 功能说明

### Dashboard
Expand Down Expand Up @@ -375,11 +444,34 @@ locations = /news,/about

```ini
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
http_proxy = http://user:[email protected]:8080
```

### 插件

默认情况下,frpc 只会转发请求到本地 tcp 或 udp 端口。

插件模式是为了在客户端提供更加丰富的功能,目前内置的插件有 **unix_domain_socket****http_proxy**。具体使用方式请查看[使用示例](#使用示例)

通过 `plugin` 指定需要使用的插件,插件的配置参数都以 `plugin_` 开头。使用插件后 `local_ip` 和 `local_port 不再需要配置。

使用 **http_proxy** 插件的示例:

```ini
# frpc.ini
[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
plugin_http_user = abc
plugin_http_passwd = abc
```

`plugin_http_user``plugin_http_passwd` 即为 `http_proxy` 插件可选的配置参数。

## 开发计划

计划在后续版本中加入的功能与优化,排名不分先后,如果有其他功能建议欢迎在 [issues](https://github.com/fatedier/frp/issues) 中反馈。
Expand All @@ -388,9 +480,7 @@ http_proxy = http://user:[email protected]:8080
* frps 支持直接反向代理,类似 haproxy。
* frpc 支持负载均衡到后端不同服务。
* frpc 支持直接作为 webserver 访问指定静态页面。
* frpc 完全控制模式,通过 dashboard 对 frpc 进行在线操作。
* 支持 udp 打洞的方式,提供两边内网机器直接通信,流量不经过服务器转发。
* 支持 plugin,frpc 获取到的连接可以交给指定 plugin 处理,例如 http 代理,简单的 web server。
* 集成对 k8s 等平台的支持。

## 为 frp 做贡献
Expand All @@ -416,6 +506,10 @@ frp 交流群:606194980 (QQ 群号)

![donate-alipay](/doc/pic/donate-alipay.png)

### 微信支付捐赠

![donate-wechatpay](/doc/pic/donate-wechatpay.png)

### Paypal 捐赠

海外用户推荐通过 [Paypal](https://www.paypal.me/fatedier) 向我的账户 **[email protected]** 进行捐赠。
Binary file added doc/pic/donate-wechatpay.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 32f8745

Please sign in to comment.