如何使用家里主机提供WEB服务

障碍

  1. 家庭宽带没有固定IP
  2. ddns不稳定
  3. 基础电信运营商屏蔽了家庭宽带的80、443等端口

由于以上几个问题的存在,你在家中的WEB服务只能以 http://域名:端口 的形式访问,由于使用了ddns,还会存在时而无法访问的情况。

解决

  1. 购买国外VPS
  2. VPS将请求转发到家里主机

为什么是购买国外的VPS?

  1. 在满足需求的情况下,国外的VPS最便宜,大部分 $5/月,我所知最便宜的 $19.99/年
  2. 稳定性也不差
  3. 只限流量,不限带宽,所以访问速度上也挺快
  4. 同时还可以通过它科学上网
  5. 不需要备案

具体操作

  1. 购买VPS

    推荐几个服务商

    • Vultr
    • Linode
    • VPS.NET
    • DigitalOcean
    • BandwagonHost
  2. 请求转发

    如何使用家里主机提供WEB服务_第1张图片

    vps上需要做的操作:

    /etc/ssh/sshd_config末尾添加如下两行

       GatewayPorts yes
       ClientAliveInterval 60
    

    GatewayPorts配置项作用:
    对于远程端口转发,sshd服务默认只允许从本机回环接口访问,打开该配置项后,就可以从公网访问了

    ClientAliveInterval配置项作用
    当连接两端没有数据传输时,sshd服务会每隔60秒向对端发送一次数据,以保持连接不被断开

    在家中主机上需要做的操作:

    $ ssh -CfNg -R 80:127.0.0.1:80 [email protected] -i ~/.ssh/vps
    $ ssh -CfNg -R 443:127.0.0.1:443 [email protected] -i ~/.ssh/vps
    

    其中 66.205.155.169 是你所购买的vps的IP

    如果一切顺利,那么vps就会监听80和443端口,当有请求时,会将请求转发到你家中的主机。

    root@ss:~# netstat -ntpl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      29639/sshd: root
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      29512/sshd
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      29606/sshd: root
    tcp6       0      0 :::80                   :::*                    LISTEN      29639/sshd: root
    tcp6       0      0 :::22                   :::*                    LISTEN      29512/sshd
    tcp6       0      0 :::443                  :::*                    LISTEN      29606/sshd: root
    

你可能感兴趣的:(如何使用家里主机提供WEB服务)