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

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

  •  
  •   flyingnn · 2015-12-25 17:47:49 +08:00 · 4366 次点击
    这是一个创建于 3275 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    just1
        1
    just1  
       2015-12-25 18:15:57 +08:00 via Android   ❤️ 1
    location ^~ /test/ {
    proxy_pass http://backend/;
    }
    flyingnn
        2
    flyingnn  
    OP
       2015-12-26 00:06:13 +08:00
    @just1 试了,不行,还是以 http://backend/test/a.html 访问。
    shajiquan
        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;
    }
    }
    lekai63
        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/;
    }
    }
    flyingnn
        5
    flyingnn  
    OP
       2015-12-28 09:46:07 +08:00
    @shajiquan
    @lekai63
    参考两位的方法,已经 OK ,非常感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3236 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:19 · PVG 12:19 · LAX 20:19 · JFK 23:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.