nginx 配置简单的代理服务器

Nginx 的常见用途之一是将其设置为代理服务器,这意味着服务器接收请求,将它们传递给代理服务器,从它们检索响应,并将它们发送到客户端。

我们将配置一个基本的代理服务器,它为来自本地目录的文件的图像请求提供服务,并将所有其他请求发送到代理服务器。在此示例中,两个服务器都将在单个 nginx 实例上定义。

首先,通过在 nginx 的配置文件中再添加一个 server 块来定义代理服务器,其内容如下:

server {
    listen 8080;
    root /data/up1;

    location / {
    
    }
}

这将是一个简单的服务器,它侦听端口 8080(以前,由于使用了标准端口 80,因此未指定 listen 指令)并将所有请求映射到本地文件系统上的 /data/up1 目录。创建此目录并将 index.html 文件放入其中。请注意,root 指令位于服务器上下文中。当用于服务请求的 location 块不包含自己的 root 指令时,使用此类 root 指令。

接下来,使用上一节中的服务器配置并对其进行修改,使其成为代理服务器配置。在第一个 location 块中,将 proxy_pass 指令与参数中指定的代理服务器的协议、名称和端口一起放置(在我们的示例中,它是 http://localhost:8080):

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

    location /images/ {
        root /data;
    }
}

我们将修改第二个 location 块,该块当前将带有 /images/ 前缀的请求映射到 /data/images 目录下的文件,使其与具有典型文件扩展名的图像请求相匹配。修改后的位置块如下所示:

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

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

当 nginx 选择一个 location 块来服务请求时,它首先检查指定前缀的 location 指令,记住具有最长前缀的 location,然后检查正则表达式。如果与正则表达式匹配,则 nginx 选择此 location,否则,它选择之前记住的 location。

代理服务器的最终配置如下所示:

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

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

该 server 将过滤以 .gif、.jpg 或 .png 结尾的请求,并将它们映射到 /data/images 目录(通过将 URI 添加到 root 指令的参数)并将所有其他请求传递到上面配置的代理服务器。

要应用新配置,请按照前面所述向 nginx 发送重新加载信号,即

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号