vps云服务器搭建内网穿透,frp,nginx,apache,tomcat反向代理整合,云服务器选择

版权声明:本文为博主原创文章,转载请注明出处:http://blog.csdn.net/sinat_34820292 https://blog.csdn.net/sinat_34820292/article/details/78162390

本文重点: 内网穿透思路,frp内网穿透的搭建, nginx服务器的配置,科学上网的技术关键词


无关的吐槽:作为一个计算机网络小白,学了点java web就想搞微信开发,发现微信开发需一个主机以及80端口,可把我为难坏了,云服务器上搭建eclipse开发环境要么卡死,性能好点的又嫌贵,用别的解释型语言php/pyhon/nodejs又不太熟,针对java开发,新浪云SAE提供的自动部署工具特别慢而且调试困难,想过在服务器上搭建svn服务器,然后自动的把提交上去的代码部署到生产环境,折腾一天也失败了。

寻找解决方案,实践表明免费资源不好使:很早就知道有花生壳内网穿透,当时付了5块钱,却用不成,带块特别特别窄,卡半天出个界面。后来还尝试过frp,没搭建自己的服务器,用的是免费的,折腾几天也没成功一次。
免费的不好用,付费的呢,现有的别人实现好的,未必好用,看你的需求。我选择花钱买服务器,自己实现

1. 关于注册域名和选择云服务器

云服务的选取:

  1. 先不考虑价格因素,国内云服务器自然是在墙内,想要用云服务科学上网没可能了。
  2. 国外的可以搭建科学上网服务,但是国内的优势在于网路比较稳定,用国外的云服务器在特定时刻可能会连不上,网路拥堵丢包。
  3. 再考虑收费特性:国内服务器最贵的是什么?带宽!!!,带宽!!!,带宽!!!(最近被阿里云服务器上一天上百元的网络费伤到了,还以为被DDOS攻击了,看了看,没被攻击,就是走的流量多了,所以过来再加一个“带宽!!!”,重要的事情说三遍)
    国内的比较知名的云服务器提供商,比如阿里云,新浪云,百度云,1CPU,8M带宽的服务器一个月大概需要400软妹币,不知名的价格上也没好多少,图便宜用1M带宽的,慢的那叫难受(想锤烂电脑的那种难受),价格也在100软妹币以上。
  4. 逛各种论坛得知国外的vultr云服务器,价格5刀一个月,折合35软妹币,哇好划算哦,关键是在国外(你懂的),还有一个特别好的优点就是不限制带宽,要转发内网,带宽窄了可是会很难受的。我从上面scp文件速度能飙到40M,服务器上网络环境真是好,几百M的东西秒秒钟下载并安装完毕,当时可是惊到我了!
  5. 还有就是CPU性能:
CPU信息 主机
vultr单核CPU Vultr的 1CPU,1G内存,ubuntu server,5$/月
col 2 is 腾讯云上的配置1CPU,2G内存,windows 2016,125¥/月

对CPU性能研究不多,前者看的频率和缓存还不错,后者是至强的,目测应该是16核或者18核CPU里的一个核心(只给你一台能电脑的1/16的性能),我个人认为前者的性能要好。

总结一下,开发环境用vultr云服务器划算,便宜,带宽比较自由,做内网穿透速度快,使用上的灵活度比较高。而生产环境下多一两百块钱应该不是自掏腰包,稳定性尤为总要,国外的可能什么时候就网路不同连不上(目前我选的vultr云服务器主机的位置在东京,还是比较稳定的,没遇到网路不通连不上的问题)。

域名注册:

这个很有必要吐槽一下,国内的需要域名备案,需要备案需要认证域名,域名认证前需要先买服务器备案,我提交了域名认证一两个星期之后才审核完,在认证之前无法用域名访问自己的http服务很耽误事,时间就是生命呀。以前在namecheap上注册域名,在vultr云服务器上搭建服务器,当时还不会绑域名,没有paypal账户,英语四级都没过,也一个小时就完成了操作。而在国内买了.cn域名和云服务器,光是填写申请备案的表单就花了几个小时,然后还有无尽的等待,时间是生命。。。域名的价格和使用上没有太大的优劣之分。

2. 开始做内网穿透(内网服务器映射到子域名上):

1.首先在自己的域名服务商那里做域名解析DNS:

添加如下这样两条A记录(我希望把内网的服务器解析为二级域名,这样比较方便)
这里写图片描述

Host值为@(空着也可以)的记录代表域名本身,如 baidu.com,指向value的ip地址。

Host为*的A记录代表二级域名或者多级域名,如www.baidu.com ,www.m.baidu.com, a.b.c.e.f.g.h.i.j.k.baidu.com,都会指向这个ip地址

2. 服务器上安装nginx,apache,php,mysql等所需服务器

2.1 我用的是ubuntu系统,安装网上教程很多,大致为:

apt-get install nginx
apt-get install apahce2
apt-get install mysql-server
apt-get install php

2.2 网站的主目录位于: /var/www/html 目录下

2.3 上述这些服务的启动关闭重启语法为:

service nginx/apache2/mysql{{服务名}} start/stop/reload/restart{{操作}}

2.4 上述服务的配置文件都位于: /etc/{{服务名}}/ 目录下

2.5 防火墙打开一个端口 ,ubuntu系统命令: ufw allow {{端口}}
windows上 :
netsh advfirewall firewall add rule name="Tocat Port" dir=in action=allow protocol=TCP localport=8080

2.6 ubuntu服务器上查看一个链接: curl http://localhost
ubuntu服务器上下载一个链接 : wget http://localhost

3. 配置nginx

/etc/nginx/sites-enabled/ 目录下放nginx的站点配置,会自动加载
新建并编辑配置文件: vim proxy01

#配置负载均衡池
#php负载均衡池
upstream p_pool{
    server 127.0.0.1:8081;
}
#tomcat 负载均衡池
upstream j_pool{
    server 127.0.0.1:8080;
}
# 隧道负载均衡池
upstream c_pool{
    server 127.0.0.1:8082;
}
# tomcat服务器反向代理
server {
    listen       80;
    server_name  j.youdomin.com;
    access_log logs/java/default.log;
    error_log logs/java/default.error;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://j_pool;
    }
}

# php apahce反向代理
server {
    listen       80;
    server_name  p.youdomin.com;
    access_log logs/php/default.log;
    error_log logs/php/default.error;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://p_pool;
    }
}
###############################################################
###############################################################
######### 分割线,下面是把frp服务器映射到二级三级域名 ################
# 8082端口是frps工作的端口,详见下文frps配置
# 用三级域名(下文*.c.youdomin.com里的*)区分内网服务,
# 一份服务端,客户端想要多少个都行,换个三级域名就行,美滋滋
# frps的配置见下文
server {
    listen       80;
    server_name *.c.youdomin.com;
    access_log logs/default.log;
    error_log logs/default.error;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://c_pool;
    }
}

4. 安装配置frp隧道

其实写到这里才开始内网穿透,上文只是配套准备工作
frp官方中文文档
frp发布版本下载
软件很小很绿色,解压后只有几个文件,稍作配置即可使用(很舒服的感觉)
不同的平台上的配置方法是一样的:

我的配置如下,基本是frps_full.ini 和 frpc_full.ini 里面我看得懂的内容copy过来改成自己的域名和密码,以及对应的服务器端口

frps.ini frpc.ini
这里写图片描述 right-aligned 这里写图片描述这里写图片描述

在ubuntu服务器里面,我们需要让frps后台运行,命令如下 :

root@ubuntu:~#  ./frps -c frps.ini  这样会占用当前bash很不方便
root@ubuntu:~#  (./frps -c frps.ini $)会单独后台开启一个运行

要关闭的的话可以通过杀死进程的方法:
查看进程号 : ps -e | grep frps
结束进程: kill [进程编号]

在windows 下启动frpc

.\frpc -c frpc.ini 

如果也希望后台运行不出现控制台:创建 startup.bat脚本,内容如下

%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
.\frpc.exe -c frpc.ini

双击即可让frp客户端在后台运行,关闭需要通过任务管理器结束进程

根据前面 frps.ini设置的管理员端口账户密码在浏览器登陆:
http://youdomin.com:7500/
这里写图片描述
可以看到是否成功设置好了内网穿透

3. 补充说明内容

也可以用ssh的隧道做内网穿透,下面有几个很详细很好的参考
https://zhaodi.me/how-to-access-intranet-by-establishing-ssh-reverse-tunnel-on-windows-pcs/

https://www.pocketdigi.com/20161215/1504.html

http://blog.csdn.net/zhangguo5/article/details/77848658?utm_source=5ibc.net&utm_medium=referral

还有n2n内网穿透方案。如果喜欢折腾,可以弄个路由器刷上openwrt系统玩。

科学上网:

shadowsocks方案

pptpd方案(好像被全面封杀了,死活不行)

openvpn 方案

Squid搭建代理服服务器

tinyproxy搭建代理服务器

用php-workman实现一个代理服务器

NAT原理与NAT穿越 (这个好像很专业看不懂,数学类专业没学过计算机网络的我心塞塞)

我之前按照网上的pptpd教程搭建vpn服务器,服务器网络会挂掉,就没法连上维护了,所以注意做快照(建立还原点),比较安全的方法是用 shadowsocks,或者用一个 docker容器来跑这些服务,搭建代理服务也是不错的选择。

猜你喜欢

转载自blog.csdn.net/sinat_34820292/article/details/78162390