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上运行的代理服务器。