家庭服务器建站实战:利用海外主机与内网穿透的完整方案

家庭服务器建站实战:利用海外主机与内网穿透的完整方案

系列文章:家庭服务器

之前几篇文章介绍了家庭服务器PVE安装部署,网络情况以及供电情况。这个主要介绍一下如何建站。

本文介绍的方案已经运行了将近4个月,目前看来运行良好!

文章标题是AI生成的,确实比自己想的好~~~

本文提供的部署方案仅供学习,测试。学习完成后请立即删除
本文提供的部署方案仅供学习,测试。学习完成后请立即删除
本文提供的部署方案仅供学习,测试。学习完成后请立即删除

更多内容:家庭IDC / Proxmox

 

特别提醒

使用家庭宽带的公网IP建站是违法的,因为国内网站建设必须有ICP备案。

ICP备案有俩个主体:一个是个人,一个是接入商(腾讯云,阿里云等)。

使用家宽建站明显没有接入商,就没法备案。所有你懂的....

国内服务器建站需要分别已完成:ICP备案,公安备案,才能正式上线网站。

海外服务器建站目前不需各种备案,包括香港,新加坡等服务器建站均不需要。

但是如果搭建非法网站,这肯定是不行的!要做守法公民哦~!

 

 

建站模式

我简单画了一个图,下面是我的方式(这里不纠结这种方式是否合法,只是做分享)。

如果你有已备案的域名,可选择国内云服务器。

有童鞋问:既然已经有海外服务器了,为什么还要弄家庭服务器?

童鞋你的网站只是静态页面的话可能仅需要一些存储空间就行了。

但是如有你的网站需要 1T+磁盘空间?16G运行内存?更好的CPU?更好的算力?

如果按这个要求采购海外服务器价格不菲。只需花钱买一个网络特别好的海外服务器就行了。然后自己采购一台配置高一点实体主机。不是更省钱?

但是这样做有利有弊,毕竟家庭服务器不像正规机房那样SLA有保障!

我目前运行的网站因为用的mongodb和Redis 导致内存占用特别大。16年买的杜甫KS3C 8G内存已经不够用了。但是再升级配置的话月付将近20欧元了。

所以我有这个系列的文章了!

 

 

选择主机

海外主机首先考虑:网络延迟低,不丢包

目前我使用的是Azure,国内三网延迟很低。其他推荐的话AWS(亚太数据中心),还有前几天白嫖的华为云新加坡服务器

 

如果国内主机的话,基本上网络都不差。看情况选择就行。

 

内网穿透

内网穿透目前还是选择使用 FRP!参考文章:frp专注于内网穿透的反向代理应用,部署使用实战教程

博主将海外服务器的 80 和 443 端口走TCP协议直接穿透到 家庭服务器上,因为我没有其他家宽。

如果你海外主机要搭建多个网站且不在同一台家宽上,童鞋可以选择 HTTP/HTTPS协议。

至于部署方式,这里不再重复说明。参考上的文章就行了。

本文下面的内容都是TCP协议方式穿透介绍的!

 

折腾总结

以下是折腾过程中遇到的一些问题,以及解决方式!

 

frpc配置

下面是frpc 配置内容,仅供参考!

特别注意:transport.proxyProtocolVersion="v2"  ,否则无法获取访客真实IP。

serverAddr = "xx.xx.xx.xx"                                                                                                                                                                                                                    
serverPort = 12345

auth.method = "token"
auth.token = "12345"


[[proxies]]
name = "http"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 80
transport.proxyProtocolVersion = "v2"

[[proxies]]
name = "https"
type = "tcp"
localIP = "127.0.0.1"
localPort = 443 
remotePort = 443 
transport.proxyProtocolVersion = "v2"

 

 

拉黑IP

做站避免不了一些恶意IP,经过FRP穿透方式,没法利用防火墙来拦截访客IP。

方式1,有一些网站支持配置访客黑名单

方式2,利用Nginx拦截黑名单,下面是我分享的配置

 

主配置vhost 中新增   include /usr/local/nginx/conf/extend/blocklist.conf;

server {
  listen 80 proxy_protocol;
  listen [::]:80 proxy_protocol;
  listen 443 ssl http2 proxy_protocol;
  listen [::]:443 ssl http2 proxy_protocol;
 ......
 
  include /usr/local/nginx/conf/extend/blocklist.conf;

 ......                                                                                                                                                                                                            

 

新建文件:/usr/local/nginx/conf/extend/blocklist.conf 粘贴下面的(下面内容是目前我拦截的内容,可按自己的情况修改该配置)

编写格式是 IP CIDR,不懂得童鞋可搜索看看~

deny 64.124.0.0/16;                                                                                                                                                                                                                            
deny 14.153.0.0/16;
deny 14.155.0.0/16;
deny 188.64.171.0/22;
deny 176.9.253.0/22;
deny 192.162.165.0/22;
deny 46.246.65.0/22;
deny 27.46.69.0/22;
deny 117.65.27.0/22;
deny 220.178.134.0/22;
deny 220.178.135.0/22;
deny 47.76.209.0/22;
deny 47.76.99.0/22;
deny 37.115.124.3;
deny 95.28.32.33;
deny 212.86.109.70;
deny 185.127.165.170;
deny 176.57.69.61;
deny 91.121.181.191;
deny 37.235.49.125;
deny 91.132.138.42;
deny 62.113.118.27;
deny 31.23.194.19;
deny 62.113.118.27;
deny 220.179.219.136;
deny 183.202.103.69;
deny 112.49.246.219;
deny 203.218.244.48;
deny 113.87.185.76;
deny 120.237.85.78;
deny 183.238.149.14;
deny 189.1.223.135;
deny 183.239.175.174;

 

反代网站

比如针对一些海外用户,更快的访问我们的网站。或者增加网站的负载能力。

我们可以利用家庭服务器反代网站,怎么样改动最小呢?

比如博客地址:51.RUYO.net

第一步,在家庭服务器配置Host (IP换成真实的)

115.115.115.115  51.ruyo.net

 

第二步,配置Nginx vhost,直接反代 51.ruyo.net 即可

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  ssl_certificate /usr/local/nginx/conf/ssl/ruyo.net.crt;
  ssl_certificate_key /usr/local/nginx/conf/ssl/ruyo.net.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 10m;
  ssl_session_cache builtin:1000 shared:SSL:10m;
  ssl_buffer_size 1400;
  add_header Strict-Transport-Security max-age=15768000;
  ssl_stapling on;
  ssl_stapling_verify on;
  server_name 51.ruyo.net;


  location / {
    proxy_pass  https://51.ruyo.net;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 160;
    client_max_body_size 2000m;
    proxy_set_header Host $http_host;
    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;
  }
}

 

 

 

最后总结

这种方式还是存在一些弊端,必须自动签发域名证书会有问题。因为域名解析的IP和实际签发的IP不一致。

其他问题大家可留言讨论吧~

 

版权声明:
作者:我是小马甲~
链接:https://51.ruyo.net/18818.html
来源:如有乐享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
家庭服务器建站实战:利用海外主机与内网穿透的完整方案
系列文章:家庭服务器 之前几篇文章介绍了家庭服务器PVE安装部署,网络情况以及供电情况。这个主要介绍一下如何建站。 本文介绍的方案已经运行了将近4个月,……
<<上一篇
下一篇>>