使用 nginx 反向代理作为电信公网 IP 80端口封锁的应对手段,以本站为例

然而…

反向代理方案在我的环境中还是不可靠,最后只能直接用kcptun把树莓派的80和443端口转发到VPS上作为临时解决方案

前言

树莓派放在家里,中国电信家用光纤接入,所以没法用80和443端口
但我这个站点又是放在树莓派上,毕竟站点标题是这么写的
之前的解决方案是用autossh把80和443端口转发到VPS上,但很不稳定,也非常浪费资源
好吧,其实是纯属暑假闲得蛋疼,就顺带研究一下nginx的反向代理
在公网提供服务的设备放在家里请注意局域网安全

目标

  • 我的网站能正常地被访问,而不是需要手动加端口号
  • 反向代理机写成泛域名解析,后端能吃到正常的server_name,这样的话反向代理机在部署完成后就不需要动了

缺点

为了一时的方便,抛弃了SSL

环境

  • 我的公网IP会变,所以已经部署好DDNS
  • 在公网暴露了WEB服务但没有80端口的机器(例如我放在家里的树莓派)
  • 网关设定好端口转发,把内网的WEB机器的端口转发到互联网出口上
  • 在公网环境下测试能不能以 http://DDNS域名:端口号 成功访问
  • 一台有公网IP的Debian VPS
  • 你打算被外网访问的域名的A记录设定为VPS的IP(这里以 www.server.com 为例)

动工

Debian VPS装上nginx

apt update
apt install nginx

在 /etc/nginx/nginx.conf 里加上这几行,解决一些奇怪的50X错误
好吧,还是偶尔出现一些奇怪的50X错误,估计是被代理的域名用DDNS导致,反代VPS的crontab里写跟DDNS触发间隔一样的时间重启nginx就好了

proxy_buffer_size 64k;
proxy_buffers 32 128k;
proxy_busy_buffers_size 128k;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;


编辑 /etc/nginx/site-enabled/ 里的站点文件

server
{
    listen 80;
    server_name *.server.com;

    location / {
        proxy_pass http://你的DDNS域名:81;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    }
}

nginx重新加载配置文件

nginx -s reload

访问www.server.com,搞定

chevron_left
chevron_right

Leave a comment

您的电子邮箱地址不会被公开。

Comment
Name
Email
Website