Nginx反向代理的配置


反向代理

反向代理通过代理服务器接收请求并转发至内部服务器,从而保护网站安全并加速响应。它不仅可以有效保护网站安全,还可以通过缓存静态资源来加速web请求的处理速度。

配置详解

在虚拟主机中启用反向代理功能需要在server模块中配置location指令并使用proxy_pass指明转发目标。

1、在配置文件/etc/nginx/conf.d/default.conf中默认的虚拟主机反向代理示例配置如下:

nginx

1.1、location:location指令用于匹配请求规则,常用的匹配格式如下:

  • location /:匹配所有请求,包括根路径。
  • location 字符串:匹配以字符串开头的所有请求。例如:/cn/可以匹配/cn/、/cn/cities/、/cn/cities/bj/和/cn/cities/bj.html。
  • location ~ 正则表达式:区分大小写匹配正则表达式。例如:~ \.(jpg|jpeg|png)$表示区分大小写匹配所有以.jpg、.jpeg和.png结尾的请求。
  • location ~* 正则表达式:不区分大小写匹配正则表达式。例如:~* \.(jpg|jpeg|png)$表示不区分大小写匹配所有以.jpg、.jpeg和.png结尾的请求。
  • location = 字符串:精准匹配,只匹配请求路径与字符串相同的请求。例如:= /cn/只匹配路径为/cn/的请求。

1.2、proxy_pass:转发的目标主机,可以是IP地址或域名。注意以下两种写法的区别:

  • proxy_pass 目标地址:请求路径拼接在目标地址后面进行转发。例如对于请求路径/cn/,如果目标地址为http://127.0.0.1,则最终的转发目标地址为http://127.0.0.1/cn/。
  • proxy_pass 目标地址+目标路径:请求路径会被替换为目标路径后进行转发。例如对于请求路径/cn/,如果目标地址为http://127.0.0.1/,则最终的转发目标地址为http://127.0.0.1/;如果目标地址为http://127.0.0.1/china/,则最终的转发目标地址为http://127.0.0.1/china/。

配置示例

本节示例分别将中文和英文网站放在目录/var/website/cn和/var/website/en中,并通过配置虚拟主机使用端口81访问中文网站,使用端口82访问英文网站;配置反向代理,使用80端口通过路径/cn/将请求转发至81端口访问中文网站,通过路径/en/将请求转发至82端口访问英文网站。

网站配置

1、配置虚拟主机,虚拟主机的配置细节请见上一节“Nginx基于端口的虚拟主机配置”。

nginx

2、在/etc/nginx/conf.d/default.conf默认虚拟主机的配置文件中增加两个location配置。

nginx
  • location /cn/:匹配所有以/cn/开头的请求。
  • proxy_pass http://127.0.0.1:81/:将所有请求转发至本机81端口的根目录。

访问测试

1、在浏览器输入IP地址和路径访问网站,默认端口80和默认首页index.html,访问时可省略。

1.1、输入http://服务器IP/cn/,访问中文页面。

nginx

1.2、输入http://服务器IP/en/,访问英文页面。

nginx

发表评论

评论数量:0