利用Nginx实现反向代理

笔记本 2017-08-25

如何利用Nginx实现反向代理

关于什么是反向代理这里就不多说明了,知乎上有不少通俗易懂的解释。

至于反向代理能用来做什么,反向代理的用途其实很多,比如用来访问某些“不存在”的网站,更多的用途是用来访问外网无法连接的内网,像是本机未开放的端口亦或者是局域网。

要用Nginx来实现反向代理比较简单,只需要在网站配置文件中添加下面这些:

location / 
{
    proxy_pass 目标URL;
    proxy_set_header Host 发送域名;
    proxy_set_header X-Forwarded-For $remote_addr;
    #proxy_cache_key 发送域名$request_uri$is_args$args;
    #proxy_cache_valid 200 304 12h;
    
    expires 2d;
}

location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$
{ 
    proxy_set_header Host 发送域名;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass 目标URL;
    
}

(请确认以上配置没有与已有配置冲突,先注释掉原配置中关于location的部分)

目标URL填你要反向代理的网址,记得要带上http://并且末尾不要加/
发送域名填向被反向代理的主机发送的域名,如果不确定的话直接填目标站点的域名(不要加http:///

这时候访问你的站点,应该显示的就是被反向代理站点的内容了

如果需要开启缓存的话,去掉上面的两行注释就OK了(这里设置的缓存时间为12小时,修改上面的12h即可)
当然也可能出现反向代理不彻底的情况(站点内指向的链接仍为源站点),那么就在上面的两个空行处都加上这些:

proxy_set_header Accept-Encoding "";
sub_filter "目标域名" "替换域名";
sub_filter_once off;

这样访问时目标域名就会全部被替换成替换域名


本文由 BeLittleYang 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论