用Nginx如何实现简单反向代理

987 次浏览次阅读
没有评论

共计 1294 个字符,预计需要花费 4 分钟才能阅读完成。

反向代理,这个词相信搞网络的朋友都很熟悉的,但是具体是什么意思呢?说实话,复杂的我也不懂,就我个人理解而言,反向代理有很多用途,比如说保护真实服务器不被外界攻击,加速网络等等。今天我们要介绍的就是加速网络的一种。

首先介绍一下场景:

我有一个网站,部署在法国的服务器上,域名是 www.2.com,国内用户直接访问这个网站的时候,网络速度非常的慢,因为大家都知道,中国到法国的网络是经过了很遥远的距离传输。国内的服务器虽然速度很快,但是费用却很贵,那么有什么办法可以加速国内用户访问我法国的网站呢?今天我就给大家介绍一种反向代理加速的方法。

首先我们要找一台访问法国服务器速度比较快的服务器,折中一点我们可以找香港的服务器,配置不需要太高,为什么挑香港呢?因为香港是我们中国作为对外的一个转接口,大陆到香港的网络速度不会慢,而香港到法国的速度又不会太慢,所以我们选择香港来中转。

实现方法:在香港服务器上部署反向代理服务,然后将域名解析到香港服务器,当用户访问我网站的时候,实际是访问了香港的服务器,然后由香港服务器将用户的请求转发到法国服务器,法国服务器处理完成后,再将结果返回给香港服务器,香港服务器接收后再返回到用户浏览器,这样一来,用户并没有直接访问速度慢的法国服务器,而是经过了香港服务器的中转,因此访问的速度有所提高。

整个流程如下图所示:

用 Nginx 如何实现简单反向代理

那么如何实现这样的反向代理服务呢?我们选择的是 Nginx,这款大名顶顶的工具,它出生的目的就是为了实现反向代理服务。下面是一个简单的反向代理服务配置:

upstream remote                                     #这里的 remote 是可以随便取的名称
{
    keepalive 30;                                   #这里指定保持连接,时间为 30 秒
    server www.2.com;                               #这个 www.2.com 是目标网站的 IP
}
server {
    listen       80;                                #这个是中转机绑定的端口
    server_name  www.1.com;                         #这里是中转机绑定的域名

	proxy_buffering off;                            #这两行是指关闭传输缓冲区,降低内存占用,提高响应速度
    proxy_request_buffering off;   

    location / 
    {
        proxy_set_header X-Real-IP $remote_addr;    #将用户的真实 IP 传递给目标服务器
        proxy_set_header Host www.2.com;            #设置 Host 为 www.2.com,因为目标服务器的网站绑定了域名 www.2.com
        proxy_set_header Connection Keep-Alive;     #设置保持长连接,时间为上面 upstream 里的 keepalive 的 30 秒
        proxy_pass http://remote;                   #这里的 remote 对应 upstream 设置的名称
        sub_filter "2.com" "1.com";                 #这里表示将目标网站的字符串“2.com”全部替换成“1.com”sub_filter "哈哈" "你好";                   #这里表示将目标网站的字符串“哈哈”全部替换成“你好”sub_filter_once off;                        #这里表示上面的替换是替换全部匹配成功的内容,而不是只替换一次
    }
}
正文完
 
admin
版权声明:本站原创文章,由 admin 2020-06-18发表,共计1294字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)