用nginx搭建一个简单的代理服务器

原文:http://nginx.org/en/docs/beginners_guide.html

nginx另一个使用的比较多的情况是作为代理服务器,代理服务器接收请求,然后把请求传递到代理服务器,nginx最后会提取代理服务器的回复,并把这些回复发送给客户端。
我们将配置一个基本的代理服务器,图片文件的请求在本地目录中服务,其他的所有请求发送到代理服务器。这个示例中,两个服务都被定义在同一个nginx实例中。

首先,定义用来代理的服务器需要添加一个或者更多个server block到nginx配置文件中,内容如下:
server {
    listen 8080;
    root /data/up1;


    location / {
    }
}

这个服务监听8080端口(先前的,listen指令没有指定端口,是因为默认的端口是标注端口80被使用),映射所有的请求到本地文件系统的/data/up1目录。创建/data/up1目录,放进index.html文件。注意:root指令是放在server里的。这个root指令是在匹配到用来服务请求的location block中没有指定自己的root指令时。

接下来,使用先前的配置作为服务配置文件,然后修改它成为一个代理服务器配置。放置proxy_pass指令代表代理协议,proxy_pass的参数代表代理服务器的名字和端口号(这里是,http://localhost:8080):

server {
    location / {
        proxy_pass http://localhost:8080;
    }

    location /images/ {
        root /data;
    }
}

我们将修改第二个location block,当前映射的请求使用/images/前缀去比较,然后到/data/images目录下找文件。为了通过典型的文件后缀进行图片请求的匹配,我们这样修改:
location ~ \.(gif|jpg|png)$ {
    root /data/images;
}



参数是一个正则表达式,匹配所有以.gif, .jpg, 或者 .png结尾的URI。一个正则表达式应该由~开头。图片请求就会映射到/data/images目录下。

当nginx选择一个location块去服务一个请求,nginx首先检测出location指令所指的前缀,并且会记住匹配到的最长前缀的location,然后检查正则表达式。如果匹配到了一个正则表达式,nginx就使用这个正则表达式所在的location,否则,使用先前记住的那个最长字串的location。

代理服务器的最终配置结果:
server {
    location / {
        proxy_pass http://localhost:8080/;
    }


    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}



这个服务器将会过滤以.gif, .jpg, or .png 结尾的请求,并映射他们到/data/images目录下,其他所有请求都传送到上面配置的代理服务器进行处理。
关于代理链接的更多配置可以查看这里

http://nginx.org/en/docs/http/ngx_http_proxy_module.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值