使用nginx反向代理以实现网站镜像
某些公司会墙特定网站,如果你有一个可访问的域名和服务器,就可以通过nginx反向代理来来解决这些问题。比如现在我们用mirror.example.com
镜像www.baidu.com
,以下是详细操作。
DNS里添加A记录,新增子域名,如:
mirror.example.com
在nginx里新增解析文件。注意下面的配置是用https去镜像https。
server {
server_name mirror.example.com;
下面这段location配置是关键
location / {
sub_filter www.baidu.com mirror.example.com;
sub_filter_once off;
proxy_ssl_session_reuse off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer https://www.baidu.com;
proxy_set_header Host www.baidu.com;
proxy_pass https://www.baidu.com;
proxy_set_header Accept-Encoding "";
}
下面这段SSL配置,是由Certbot生成的,这里不再赘述,可以查看我早期的文章
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/mirror.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mirror.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# 这个配置是关键,否则会产生shake error
proxy_ssl_server_name on;
}
server {
if ($host = mirror.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name mirror.example.com;
return 404; # managed by Certbot
}重启
nginx
即可。sudo systemctl restart nginx
END
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeFer!
评论