nginx + frp 搭建内网穿透

点点圈 提交于 2019-12-13 23:09:19

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

        上一个项目是开发微信公众号,由于微信的各种烦人操作,只能到处找内网映射工具  ngrok也用过,花生壳也用过  都不怎么稳定,无意间听说了frp,本着一颗折腾的心搭建了一下,结果发现很不错,就一直到项目结束,发现还是很好用的,不过当时搭建的只能一个人用,(搭建ngrok又很麻烦 试了几次都有问题 !!很无奈),这会趁着用不到,尝试搭了下可以多人使用的!记录如下

所需工具 

    1. 云服务器  我用的阿里云CentOs7.7

    2. 域名(已备案的那种)

    3. nginx 1.16.1

    4. frp 0.30

参考资料:https://juejin.im/post/5c49313f6fb9a049eb3c488f

                   https://www.wlphp.com/?post=166

                    https://blog.csdn.net/MaxWoods/article/details/89501907

  开始操作: 

    1. 先安装nginx  我用的yum安装,主要是我感觉这个方便

        yum install -y nginx  等待完成

    2. 启动Nginx并设置开机启动 

        systemctl start nginx

        systemctl enable nginx

    3. 验证Nginx是否启动

        ps -ef | grep -v grep | grep nginx
        root      2195     1  0 20:25 ?        00:00:00 nginx: master process /usr/sbin/nginx
        nginx     2196  2195  0 20:25 ?        00:00:00 nginx: worker process

    4.  查看Nginx配置文件 (记住这个位置,后面要修改配置文件)

        vi /etc/nginx/nginx.conf

    5. 对于yum安装的Nginx来说,要想使配置文件的修改生效,需要重启Nginx,运行以下命令:

        systemctl restart nginx

    6.  网页验证Nginx是否成功运行。我的是这样,代表安装成功

        

        nginx操作到此先暂停,安装frp:

         7. 先在阿里云生成2条二级域名解析,分别为 frp.domain.com,  *.frp.domain.com为例,指向当前阿里云服务器公网ip,具体操作自行百度

            

         8. 连接服务器,我用的putty,这个自己去补习吧,连接上服务器以后,下载frp,我下载的目前最新版本0.30.0 有需要自己更换版本,版本在这里找

            https://github.com/fatedier/frp/releases   下载 linux_amd64.tar.gz版本的 ,然后进入服务器登录操作

             我在根目录下建了个myproject文件夹 ,你得知道自己东西放在哪了 ,回头找配置文件好找,

            cd /     进入根目录

            mkdir  myproject  创建文件夹

            wget  https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz

            下载后解压文件,然后当前路径会生成同名文件夹 ,计入文件夹

              tar -xvf     frp_0.30.0_linux_amd64.tar.gz        解压:

             cd frp………… 不建议手打  使用tab建补全

            看到以下几个文件

        

        只需要修改 frps.ini文件,

        vi frps.ini 打开配置文件,按i进入编辑模式,使用方向键移动,最终结果如下

        

保存步骤  先按ESC 然后按  :wq   回车键保存退出

如果你的防火墙开启了 给7000/7071端口放行 ,服务器后台安全组也需要给这两个端口放行,没开的话这一步可以忽略

# 开启防火墙端口 7000端口和7071端口即为上面配置的bind_port和vhost_http_port端口

firewall-cmd --zone=public --add-port=7000/tcp --permanent

firewall-cmd --zone=public --add-port=7071/tcp --permanent

# 开启后重启防火墙,使得刚刚的修改生效

firewall-cmd --reload

设置frp开机自启,

vim /lib/systemd/system/frps.service

在frps.service里写入以下内容
 

[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
#ExecStart=你的frp完整路径/frps -c 你的frps.ini完整路径
ExecStart=/test/frp_0.20.0_linux_amd64/frps -c /test/frp_0.20.0_linux_amd64/frps.ini

[Install]
WantedBy=multi-user.target

然后就启动frps
systemctl start frps
再打开自启动
systemctl enable frps

修改nginx的配置文件

vi /etc/nginx/nginx.conf  替换里面的server模块为以下内容,注意修改路径

# frp的接收http请求的反向代理
    server {
        listen 80;
        server_name *.frp.domain.club  frp.domain.club;

        location / {
                # 7071端口即为frp监听的http端口
                proxy_pass http://127.0.0.1:7071;
                proxy_set_header Host $host:80;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";

                proxy_connect_timeout 7d;
                proxy_send_timeout 7d;
                proxy_read_timeout 7d;

        }
        # 防止爬虫抓取
        if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot")
        {
                return 403;
        }
     }

reboot重启服务器,我工作电脑是window  下载windows 客户端,我的是64位系统

https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_windows_amd64.zip

下载完后解压,使用记事本编辑frpc.ini 如下

[common]
# 部署frp服务端的公网服务器的ip
server_addr = 你的公网ip地址
# 和服务端的bind_port保持一致
server_port = 7000
#token
token = xxxxx


# 代理服务一 ,[]内的代理服务名称在全局范围内确保唯一,每个人的每个代理服务不能重名,
# 否则会影响正常使用。
 [http-a]
type = http
# local_port代表你想要暴露给外网的本地web服务端口
local_port = 8080
# subdomain 在全局范围内要确保唯一,每个代理服务的subdomain不能重名,否则会影响正常使用。
# 客户端的subdomain需和服务端的subdomain_host配合使用,保证唯一
subdomain = frp


# 代理服务二  ,各项配置说明请参考配置组一
[http-b]
type = http
local_port = 8686
subdomain = b

在你的解压路径创建一个start.bat文件,用记事本打开 复制下面内容进入

@echo off

frpc -c ./frpc.ini

pause

双击start.bat出现下图为成功

使用http://frp.frp.domain.com替换您的localhost试试效果

有问题留言 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!