我的目的是 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; 什么意思,我没想通,跑了下页面貌似也没有错...
1
detailyang 2016-06-20 21:49:00 +08:00 1
rewrite /(.+)$ /$1 break; 脱裤子放屁多此一举哈
|
2
coolloves 2016-06-20 22:15:27 +08:00 1
|
3
chinajik OP @detailyang @coolloves
我这边测试的结果是,去掉注释的话, 域名走 www.google.com 然后是反代的 http://127.0.0.1:8080/google-e; 而这就是我想要的结果... 我只是不明白为什么这样写就可以....已经丢生产线了... |
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 。 |
6
fangpeishi 2016-06-21 07:43:45 +08:00 1
|
7
ryd994 2016-06-22 04:18:01 +08:00 1
@fangpeishi 这个教程也是我入门时看的,但其实不建议看这个。
夹带私货太多,基本上都在用 rewrite 或 lua 模块,正是他的作品。 而事实上,这两个模块并不是必用,有些功能用 nginx 核心指令完全可以更高效。 |