Nginx的频繁用途之一是设置它作为代理服务器,这意味着代理服务器接收请求,将它们传递给服务器,取回响应,并将它们发送到客户端。
我们将配置一个基础的代理服务器,服务器请求的图片和所有其他请求从本地目录文件发送给代理服务器,在这个例子中,单一的nginx实例将定义2个服务器。
通过增加一个server块
server {
listen 8080;
root /data/up1;
location / {
}
}
监听8080,(此前,监听端口已经不是标准的80了),并把本地文件系统上的所有请求发送到 /data/up1 目录,创建该目录并上传index.html到目录中。
接下来,从上一节使用的服务器配置,把它改为代理服务器,在第一个位置块,写入proxy_pass指令协议,代理服务器的名字和参数指定了端口(在本例中:它是 https://localhost:8080
)
server {
location / {
proxy_pass https://localhost:8080;
}
location /images/ {
root /data;
}
}
我们修改第二块,修改后location看起来像这样:
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
该参数是一个正则表达式,匹配所有名为.gif,.jpg或.png结尾的URL,正则表达式要在~之前。
当nginx选择location块,它首先检查location指令,如果正则表达式匹配,nginx就会选择这个location,否则它会选一个较早的记忆的location。
将是这样的:
server {
location / {
proxy_pass https://localhost:8080/;
}
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
更多代理配置指令集,访问 https://nginx.org/en/docs/http/ngx_http_proxy_module.html