首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Coding
V2EX  ›  NGINX

求一个反向代理的写法,重写 URL

  •  
  •   flyingnn · 2015-12-25 17:47:49 +08:00 · 2666 次点击
    这是一个创建于 1450 天前的主题,其中的信息可能已经有所发展或是发生改变。
    server backend: http://backend/a.html

    想实现的方法是: 访问 http://a.com/test/a.html 反代到 http://backend/a.html

    location /test/(.*) {
    proxy_pass http://backend/$1;
    }

    location /test/ {
    proxy_pass http://backend;
    }

    upstream backend{
    server backend;
    }

    目前这样写是不行的,怎么才能实现呢?
    5 回复  |  直到 2015-12-28 09:46:07 +08:00
        1
    just1   2015-12-25 18:15:57 +08:00 via Android   ♥ 1
    location ^~ /test/ {
    proxy_pass http://backend/;
    }
        2
    flyingnn   2015-12-26 00:06:13 +08:00
    @just1 试了,不行,还是以 http://backend/test/a.html 访问。
        3
    shajiquan   2015-12-26 02:31:29 +08:00   ♥ 1
    你要先在你这边重写 url ,再请求过去。

    upstream test_upstream{
    # server wiki.shajiquan.com;
    server 127.0.0.1:9801;
    }

    server {
    listen 9101;
    location /test/ {
    rewrite /test/(.+)$ /$1 break;
    proxy_pass http://test_upstream ;
    proxy_redirect off;
    }
    }
        4
    lekai63   2015-12-26 11:56:01 +08:00   ♥ 1
    楼主参考这篇吧。
    https://segmentfault.com/a/1190000000406581

    server {

    listen 80;
    server_name backednd;
    root /path/to/www/root; #也可省略

    location / {
    rewrite /(.*) /test/$1 break;
    proxy_pass https://a.com/;
    }
    }
        5
    flyingnn   2015-12-28 09:46:07 +08:00
    @shajiquan
    @lekai63
    参考两位的方法,已经 OK ,非常感谢!
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2239 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 31ms · UTC 10:41 · PVG 18:41 · LAX 02:41 · JFK 05:41
    ♥ Do have faith in what you're doing.