先说废话
去年227导致ao3(archive of our own)被墙后,微博上开始有人做反向代理分享给网友,其中有位高一技术宅的反代让我印象深刻——网址竟然可以以www1开头!后来我才发现互联网≠万维网(www)…
如今我也是有服务器的人了,简单记录一下如何反向代理一个网站。毕竟有的时候把资料分享给墙内友人结果反被提醒网页打不开,也挺尴尬的…不过操作真的很简单,水一篇文章纪念一下nginx技能大进步!
安装Nginx
sudo -i #切换至root用户
apt install nginx -y #安装nginx
开启VPS的443端口:
ufw allow 443
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Nginx配置
参考【杂谈】如何优雅地搭建AO3的反代,以反向代理ao3为例,运行nano /etc/nginx/conf.d/ao3.conf
,内容如下:
server {
listen 443 ssl http2;
server_name YOUR.DOMAIN;
#proxy.conf
location /
{
proxy_pass https://archiveofourown.org;
proxy_set_header Host archiveofourown.org;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
#避免GZIP影响文字替换
gzip off;
proxy_set_header Accept-Encoding "";
#无用资源替换为空值
sub_filter "twitter.com" " ";
sub_filter "newrelic.com" " ";
#将网页原域名替换为反代域名
sub_filter "archiveofourown.org" "YOUR.DOMAIN";
#将Jquery等引用的静态资源替换到国内CDN
sub_filter "ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" "lib.baomitu.com/jquery/1.9.0/jquery.min.js";
sub_filter "ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js" "lib.baomitu.com/jqueryui/1.10.0/jquery-ui.min.js";
#允许多文本替换
sub_filter_once off;
}
#ssl setting here
}
将archiveofourown.org
改为你想要反向代理的网址,YOUR.DOMAIN
改为你的域名,保存。
测试配置文件是否有错误(试运行):
nginx -t
若没有错误,生效新的配置文件并运行 Nginx,开机启动:
nginx -s reload
systemctl start nginx
systemctl enable nginx
配置SSL
去DNS服务商添加一条指向服务器ip,内容为域名的A记录,然后回到服务器运行以下命令:
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx -y
sudo certbot --nginx
浏览器打开你的域名,此时应该已经成功了。Let‘s encrypt的证书90天到期后需要续期,届时只需运行sudo certbot --nginx
按提示操作即可。