Nginx 搭建 Google 镜像站

前言

在公司科学上网使用谷歌经常出现很长一段时间访问不了,严重影响工作效率,没办法只能自己搭建一个镜像网站。

正文

环境

  • 机房:搬瓦工
  • 系统:Ubuntu 18.04

安装 nginx

1
$ sudo apt install nginx

增加 nginx 配置

/etc/nginx/sites-enabled 文件夹内新增 google.conf 配置文件,配置文件内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
server_name www.example.com;
location / {
proxy_pass https://www.google.com/;
proxy_redirect https://www.google.com/ /;
proxy_cookie_domain google.com www.example.com;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2W1IQ-Maw";
# 这里设置cookie,这里是别人给出的一段,必要时请放上适合你自己的cookie
# 设置这个可以避免一些情况下的302跳转,如果google服务器返回302 redirect,那么浏览器被跳转到google自己的域名,那就没的玩了
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
subs_filter http://www.google.com http://www.example.com;
subs_filter https://www.google.com http://www.example.com;
# 这里替换网页中的链接,因为我们的镜像站是http的,所以上面顺便把协议也一起替换了
}
}

注:请手动更改配置中的 www.example.com 为自己的域名地址

载入配置

使用下列命令重新载入配置

1
$ nginx -s reload

添加 DNS 解析记录

将自己的域名添加一条指向该台服务器 IP 的 DNS 解析记录,访问域名即可实现访问谷歌。

增加 Basic Auth 认证

如果不想自己的谷歌镜像被别人乱用,可以增加 Basic Auth 来限制其他人使用。

生成密码

使用下列命令生成密码:

1
$ printf "your_username:$(openssl passwd -crypt your_password)\n" >> /etc/nginx/conf.d/passwd

配置 Nginx

用 vim 修改刚刚的配置文件

1
$ vim /etc/nginx/sites-enabled/google.conf

增加下列内容

1
2
3
4
5
6
7
8
...
location / {
auth_basic "Hello World";
auth_basic_user_file conf.d/passwd;
proxy_pass https://www.google.com/;
...

然后 nginx -s reload 重启 Nginx 生效。

参考

  1. Nginx 搭建 Google 镜像站
  2. 为 Nginx 添加 HTTP 基本认证(HTTP Basic Authentication)
给我加个菜?