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

来源:互联网 发布:推荐一款手机编程软件 编辑:程序博客网 时间:2024/06/05 11:56

原文: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 0
原创粉丝点击