Nginx中根据路径反向代理

今天在配置nginx的时,碰到的一个问题。

先来看下面的正确配置

upstream backend_122{
    server 192.168.80.122 weight=5 max_fails=3 fail_timeout=30s;
}
upstream backend_122_02{
    server 192.168.80.122:15672;
}       


server{
    listen          80;
        server_name                     122.100.com;
        
        access_log  /var/log/nginx/122.100.com.access.log main;
        error_log   /var/log/nginx/122.100.com.error.log; 
        
        location ^~ /rabbit/ {  #这里也最好带上/
                proxy_pass http://backend_122_02/;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Remote_addr $remote_addr;
        }       
        
        location / {
                proxy_pass http://backend_122;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Remote_addr $remote_addr; 
        }
}

注意上面2处标识出来的代码的区别,一个最末尾加了 / ,一个没有 /   ,这2个时有区别的

举例子说明吧:

location ^~ /static_js/ 
{
    proxy_cache js_cache; 
    proxy_set_header Host js.test.com; 
    proxy_pass http://js.test.com/; 
}
#如上面的配置,如果请求的url是http://servername/static_js/test.html
#会被代理成http://js.test.com/test.html
location ^~ /static_js/ 
{
    proxy_cache js_cache; 
    proxy_set_header Host js.test.com; 
    proxy_pass http://js.test.com; 
}
#则会被代理到http://js.test.com/static_js/test.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>