1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#upstream的配置
upstream server_A {
server 192.168.0.55:8080
}
upstream server_B {
192.168.0.206:8080
}
#主机192.168.0.219的配置
server {
listen 80 default_server
server_name XX.com
#server中的其它配置
#...
#如下值反向代理配置
if ($request_uri ~* "^/+$") {
proxy_pass http://server_A
break
}
#其他的反向代理配置,通过uri的正则进行匹配
# if ($request_uri ~* "regex") {
#proxy_pass http://server_B
#break
#}
}
#对应的server_A,server_B的机器的配置需要增加相应的路由规则。
#在server_A机器上增加路由规则。
location / {
rewrite "^/+bingo-szwf-sso" /path/of/php break
#...其他配置。
}
当访问 http://127.0.0.1/proxy/test/test.txt 时,nginx匹配到/proxy路径,把请求转发给192.168.137.181:8080服务,实际请求路径为http://10.0.0.1:8080/test/test.txt ,nginx会去掉匹配的“/proxy”。
当访问 http://127.0.0.1/proxy/test/test.txt 时,nginx匹配到/proxy路径,把请求转发给 192.168.137.181:8080 服务,实际请求代理服务器的路径为
http://192.168.137.181:8080/proxy/test/test.txt , 此时nginx会把匹配的“/proxy”也代理给代理服务器。
当访问 http://127.0.0.1/proxy/test/test.txt 时,nginx匹配到/proxy路径,把请求转发给192.168.137.181:8080服务,实际请求代理服务器的路径为
http://10.0.0.1:8080/static01/test/test.txt 。
实际上2、3是一种情况,即加了“/”就会去掉匹配前缀。这就引出了下一个问题。
我们使用nginx的很多时候都需要去掉前缀。前缀只是为了让nginx用来区分转发到哪个服务器,不是实际URL的一部分。例如我们需要代理访问 http://10.0.0.1:8080/test/test.txt ,如果不去掉前缀,nginx代理访问的就是 http://192.168.137.181:8080/proxy/test/test.txt ,那么这时候就需要改变代理服务器原来写好的url,这是不合理的。
一个种方案是上面提到的proxy_pass后面加根路径“/”。另一种方案是使用正则重写url。例如:
这里的
就是路径重写,其中:
如已经安装好了nginx相关的环境,现仅展示相关的反向代理的配置。默认nginx.confi的配置,可能与下面的图会有不同,重要的是后面的配置。已经安装好了nginx相关的环境,现仅展示相关的反向代理的配置。默认nginx.confi的配置,可能与下面的图会有不同,重要的是后面的配置。
-----注意查找nginx的默认配置文件,nginx.conf文件
修改设置代理
在nginx.conf配置中添加下图相关的配置,以线圈中的,其中的路径要以实际的配置文件路径为主
查看上面的配置中有引用/usr/local/u-mail/config/nginx/reverse-proxy.conf 配置文件.
检查测试配置
配置完后,使用nginx –t的命令测试一下,配置是否正确.是否有提示相关的错误.这个服务的路径要以具体的为主.
如配置有问题,按相关的提示进行更改.对比上面的配置信息进行查看.然后再重启下nginx的服务,使其加载刚刚的配置.
7
测试效果
再访问测试下相关的站点是否正常.是否会跳转到对应网站
8
除了nginx映射之外
我们还可以通过使用设置域名解析URL跳转来做(只有部分域名解析服务商才提供此项服务)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)