nginx设置代理

  • 设置简单的代理服务器
  • 说明
  • 配置
  • 设置代FastCGI代理
  • 说明
  • 配置


设置简单的代理服务器

说明

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

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

配置

1.首先,通过向nginx的配置文件添加一个服务器块来定义代理服务器,其中包含以下内容:

server {
    listen 8080;
    root /data/up1;

    location / {
    }
}

这将是一个侦听端口8080的简单服务器并将所有请求映射到本地文件系统上的/ data / up1目录。 创建此目录并将index.html文件放入其中。 请注意,root指令放在服务器上下文中。 当选择用于提供请求的位置块不包括自己的根指令时,使用这样的根指令。

2.接下来,将proxy_pass指令与参数中指定的代理服务器的协议,名称和端口放在一起

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

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

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

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

生成的代理服务器配置如下所示:

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

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

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

3.重启nginx

设置代FastCGI代理

说明

nginx可用于将请求路由到FastCGI服务器,这些服务器运行使用各种框架和PHP等编程语言构建的应用程序。

使用FastCGI服务器的最基本的nginx配置包括使用fastcgi_pass指令而不是proxy_pass指令,以及fastcgi_param指令来设置传递给FastCGI服务器的参数。 假设可以在localhost:9000上访问FastCGI服务器。 以上一节中的代理配置为基础,将proxy_pass指令替换为fastcgi_pass指令,并将参数更改为localhost:9000。 在PHP中,SCRIPT_FILENAME参数用于确定脚本名称,QUERY_STRING参数用于传递请求参数。

配置

server {
    location / {
        fastcgi_pass  localhost:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param QUERY_STRING    $query_string;
    }

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

这将设置一个服务器,该服务器将除静态映像请求之外的所有请求路由到通过FastCGI协议在localhost:9000上运行的代理服务器。