新秀网
记录生活点点滴滴

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

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

首先介绍一下场景:

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

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

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

整个流程如下图所示:

那么如何实现这样的反向代理服务呢?我们选择的是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;                        #这里表示上面的替换是替换全部匹配成功的内容,而不是只替换一次
    }
}
赞(0) 打赏
未经允许不得转载:新秀网 » 用Nginx如何实现简单反向代理

评论 抢沙发

评论前必须登录!