zoukankan      html  css  js  c++  java
  • Nginx location匹配后 跳转问题

    场景:

    服务器上81和82端口部署了两个网站,想通过listen 80端口,实现 ip/参数,来转发到不同的端口

    一开始使用了location /参数

    server
    {
         #省略其他配置 
         listen 80;
         location /one{
             proxy_pass  http://location:81
        
        }
        location /tow{
             proxy_pass  http://location:82
        
        }
    }        

    但是这样写的话,问题就来了

    此时如果我们访问:localhost/one ,并不会转发到 location:81这个地址,而是location:81/one ,此时就会404了,因为我81端口的网站没有 one这个目录或接口方法

    因为 proxy_pass 后面的地址尾部没有加 / ,那么就会把location后的 参数带过去,但是加了 / 又会有问题,会变成绝对路径,这样的话,网站的 静态文件(js/css等等)路径 可能会出现问题

    最后终于找到了一个办法,使用 rewrite(可以实现对url的重写,以及重定向)

    上代码:

    server
    {
         #省略其他配置 
         listen 80;
         location /one{
             rewrite ^/(.*) http://服务器ip/域名:81;  
        
        }
        location /tow{
             rewrite ^/(.*) http://服务器ip/域名:82;  
        
        }
    }        

    这样的话,访问:localhost/one ,就会重定向到 http://服务器ip/域名:81;  

    rewrite后面的部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址(必加

    以上就是nginx location的踩坑

  • 相关阅读:
    bzoj1042 [ HAOI2008 ] --容斥原理+完全背包
    bzoj1079 [ SCOI2008 ] --记忆化搜索
    bzoj1584 [ Usaco2009 Mar ] --DP
    bzoj4724 [ POI2017 ] --数论
    bzoj3208--记忆化搜索
    bzoj3095--数学题
    resque 遍历加载job目录下的类
    php,js清除cookie
    nginx 设置 fastcgi缓存
    php缓冲区 sapi缓冲区
  • 原文地址:https://www.cnblogs.com/getmn/p/13064623.html
Copyright © 2011-2022 走看看