Linux 下利用 Nginx 反向代理 Google 网站

Nginx 2020-02-07 阅读 41 评论 0

Nginx 服务器的反向代理服务是其最常用的重要功能。反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

本文以反向代理 Google 网站为例,反向代理其他站点也是差不多的方式。

启用 ssl 模块

由于 https://www.google.com 网址用了 https 协议,需要 nginx 启用 ssl 模块,编译 nginx 时加上--with-http_ssl_module 即可。

./configure --prefix=/opt/nginx-1.17.8 --with-http_ssl_module

配置conf

假设我们用域名 us.com 去代理谷歌,nginx 配置的 conf 如下。实际上,只要 proxy_pass https://www.google.com; 就够了,

server {
    listen       80;
    server_name  us.com;
    location / {
        proxy_pass https://www.google.com;
    }
}

如果不想继续配置,可以跳过下面的步骤。

proxy_cache_path /home/test/var/cache/nginx levels=1:2 keys_zone=proxy_cache:10m;
server {
    listen       80;
    server_name  us.com;
    
    location / {
        # 加上下面这一行就够了
        proxy_pass https://www.google.com;

        # 以下配置,是选配,不加也能实现反向代理
        # 指定头部:
        proxy_set_header Host "www.google.com";
        proxy_set_header Referer $http_referer;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Accept-Encoding "";
        proxy_set_header Accept-Language "zh-CN";

        # 启用proxy_cache缓存
        proxy_cache proxy_cache;
        proxy_cache_valid 304 2h;
        proxy_cache_valid 403 444 2h;
        proxy_cache_valid 404 2h;
        proxy_cache_valid 500 502 2h;
        proxy_cache_use_stale invalid_header http_404 http_500 http_502;
    }
}

注意第一行的 proxy_cache_path 必须加上,配置代理缓存的文件目录,其中,/home/test/var/cache/nginx 为目录,可以指定为其他文件目录;proxy_cache 为自定义的名称,必须与 proxy_cache proxy_cache; 一致。

不然会出现以下错误,

nginx: [emerg] "proxy_cache" zone "proxy_cache" is unknown in /opt/nginx-1.17.8/conf/nginx.conf:119

google 网站的代理服务器网址列表

以下几个网址,Linux、Mac OS 和 Windows都能访问,仅供参考,主要是为了方便搜索一些开发学习资源。

https://so.bban.fun

https://w.tw.53yu.com

以上网址没有指定语言,默认与本地网络环境的语言一致,如果需要搜索结果为英语语言,可以加上参数

hl=en

中文是zh

hl=zh

如以上几个地址,设置成中文语言,会是这样:

https://so.bban.fun?hl=zh

https://w.tw.53yu.com?hl=zh

英文语言:

https://so.bban.fun?hl=en

https://w.tw.53yu.com?hl=en

最后更新 2020-02-15