问下nginx配置转发的问题?

我在一个服务器上,配置了伪静态

location / {
        index  index.html index.htm index.php;
                #autoindex  on;
                try_files $uri $uri/ /index.php$is_args$query_string;    
    }

然后我想在这个服务器做一个转发。

location /api/newweb{
          proxy_pass https://test.com:8080/api/newweb;
          break;
    }

我想当请求 /api/newweb 开头时候能转发到另一个端口上,这应该怎么配置的呢?
然后不知为什么我加了这个配置后,就不能转发了,我应该怎么既能加上下面的配置又能转发呢?

if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?s=$1  last;
                break;
      }
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案
  • -e $request_filename 表示判断当前请求的路径是否是存在的文件,前面加个 ! 就是如果当前请求的路径不是真实的文件路径的话,就会走到这个 if 中

  • 然后你 if 里面的 rewrite 是把当前路径改成了 /index.php?s=$1, 比如路径是 /api/xxxx ,现在变成了 /index.php?s=/api/xxxx
    所以你的 location 就失效了

  • 如果 既要又要 的话,可以把 !-e $request_filename 写到跟 location /api/newweb 相反的 location 块中

  • 以上纯个人经验,没查资料,有不对的地方轻喷

1年前 评论
donggan (楼主) 1年前
donggan (楼主) 11个月前
讨论数量: 8
gongmeng
server {
    # 监听端口
    listen 80;
    # 绑定的域名,填写您的域名
    server_name huli-img.test;

    location ^~/weibo/
    {
        proxy_set_header referer  'https://d.weibo.com/';
        proxy_pass https://wx4.sinaimg.cn/;
    }
}

这是我处理微博图片403的转发设置,你可以参考一下

1年前 评论
donggan (楼主) 1年前
gongmeng (作者) 1年前
  • -e $request_filename 表示判断当前请求的路径是否是存在的文件,前面加个 ! 就是如果当前请求的路径不是真实的文件路径的话,就会走到这个 if 中

  • 然后你 if 里面的 rewrite 是把当前路径改成了 /index.php?s=$1, 比如路径是 /api/xxxx ,现在变成了 /index.php?s=/api/xxxx
    所以你的 location 就失效了

  • 如果 既要又要 的话,可以把 !-e $request_filename 写到跟 location /api/newweb 相反的 location 块中

  • 以上纯个人经验,没查资料,有不对的地方轻喷

1年前 评论
donggan (楼主) 1年前
donggan (楼主) 11个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!