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

Nginx 配置的疑惑

  •  
  •   chinajik ·
    jik1992 · 2016-06-20 21:32:59 +08:00 · 3258 次点击
    这是一个创建于 2859 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的目的是 www.google.com 反代内网 http://127.0.0.1:8080/google-e

    server{
        listen  80;
        charset utf-8;
        server_name www.google.com;
        location / {
                charset  utf-8;
                #rewrite /(.+)$ /$1 break;
                proxy_pass http://127.0.0.1:8080/google-e;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_buffering off;
                client_max_body_size    10m;
        }
    

    这样写的话会跳转 www.google.com/google-e 然后访问空页面 200 如果把注释解除的话,就是正常地址 www.google.com

    问题来了。。这个 rewrite /(.+)$ /$1 break; 什么意思,我没想通,跑了下页面貌似也没有错...

    7 条回复    2016-06-22 04:18:01 +08:00
    detailyang
        1
    detailyang  
       2016-06-20 21:49:00 +08:00   ❤️ 1
    rewrite /(.+)$ /$1 break; 脱裤子放屁多此一举哈
    coolloves
        2
    coolloves  
       2016-06-20 22:15:27 +08:00   ❤️ 1
    我理解的是 /(.+)$=/$1,执行后,break 了,所以访问 google.com 就是正常的 google.com
    如果注释了,就反代到 localhost 去了
    chinajik
        3
    chinajik  
    OP
       2016-06-20 22:53:22 +08:00
    @detailyang @coolloves
    我这边测试的结果是,去掉注释的话, 域名走 www.google.com 然后是反代的 http://127.0.0.1:8080/google-e; 而这就是我想要的结果... 我只是不明白为什么这样写就可以....已经丢生产线了...
    ryd994
        4
    ryd994  
       2016-06-20 23:31:59 +08:00 via Android   ❤️ 1
    @detailyang
    @chinajik
    @chinajik
    试过在 google-e 后面加 /么?

    rewrite 的 break 只是中断 rewrite 模块的处理,不影响其他。 Nginx 的配置文件是 declarative 的,绝大多数时候书写顺序是没有影响的,只有少数情况在同模块内有影响。比如 if 和上面的 break 都只是 rewrite 模块的指令。至于为啥 if 对其他指令也有效,请参见 if is evil 。
    ryd994
        5
    ryd994  
       2016-06-20 23:32:37 +08:00 via Android
    @coolloves 不好意思 @ 错了
    fangpeishi
        6
    fangpeishi  
       2016-06-21 07:43:45 +08:00   ❤️ 1
    @ryd994 正解~
    @chinajik lz 有兴趣可以看看春哥这个教程: https://openresty.org/cn/ebooks.html
    ryd994
        7
    ryd994  
       2016-06-22 04:18:01 +08:00   ❤️ 1
    @fangpeishi 这个教程也是我入门时看的,但其实不建议看这个。
    夹带私货太多,基本上都在用 rewrite 或 lua 模块,正是他的作品。
    而事实上,这两个模块并不是必用,有些功能用 nginx 核心指令完全可以更高效。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5442 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:34 · PVG 11:34 · LAX 20:34 · JFK 23:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.