发现 Nginx 的注释也是会影响执行,死坑一上午...

2019-05-24 11:35:47 +08:00
 imdong
server {
    listen       80;
    server_name  _;
    root         /path/web;
    index        index.php index.html index.htm;

    # pass the PHP 7.3 scripts to FastCGI server listening on 127.0.0.1:9073
    location / {
        include        fastcgi_params;
        fastcgi_pass   127.0.0.1:9073;
        fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
    }

    location ~* \.(html|htm|txt)$ {
        # something you want
    }
}

server {
    listen       81;
    server_name  _;
    root         /path/web;
    index        index.php index.html index.htm;

    # pass the PHP 7.3 scripts to FastCGI server listening on 127.0.0.1:9073
    location / {
        include        fastcgi_params;
        fastcgi_pass   127.0.0.1:9073;
        fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
    }

    location ~* \.(html|htm|txt)$ {
    }
}

这两段代码居然是不等效的,神特么坑...

6957 次点击
所在节点    程序员
38 条回复
xyqhkr
2019-05-24 11:41:27 +08:00
。。。神奇
xzc19970719
2019-05-24 11:42:48 +08:00
为啥???
pmispig
2019-05-24 11:42:51 +08:00
有啥区别?
zzf2019
2019-05-24 11:43:44 +08:00
有这种事吗?我也写过注释啊,没有啥问题啊
Removable
2019-05-24 11:49:02 +08:00
是不是端口不同导致的问题?毕竟变量不唯一。。。
lonelygo
2019-05-24 11:51:12 +08:00
真是注释的锅?
xiri
2019-05-24 12:00:12 +08:00
???
这两段代码不是只有端口不同吗,唯一的一句注释也是一模一样的啊
xiri
2019-05-24 12:01:46 +08:00
@xiri 完全看不懂楼主标题里的“注释”不同在哪
FFLY
2019-05-24 12:02:33 +08:00
@pmispig @xiri

貌似是“# something you want ”……
zhihaofans
2019-05-24 12:03:23 +08:00
@xiri 兄啊,一共 3 句注释呢
xiri
2019-05-24 12:07:40 +08:00
@zhihaofans 额,,,刚刚眼瞎了,没看见。
关键楼主也不说这个“不等效”具体体现在哪里,单按“等效”的字面意思理解的话,这两段配置的端口都不一样,本来就不是等效的啊
suriv520
2019-05-24 12:15:10 +08:00
LZ 可以把事情与现象描述具体一点的。
也请做交叉对照实验,比如把下面的 block 移到上面去,把 80/81 端口做个交换,把注释做个交换……再把结论发出来。
先别急着下结论,研究深入一点,最终应该是会对 nginx 的配置、默认值、优先级有一个更深刻的认识。

另附 nginx 关于注释的处理逻辑与函数:
https://github.com/nginx/nginx/blob/34a8b4506a/src/core/ngx_conf_file.c#L692
https://github.com/nginx/nginx/blob/34a8b4506a/src/core/ngx_conf_file.c#L158

配置文件中的以#开头的注释被彻底跳过了,跳过的逻辑:
https://github.com/nginx/nginx/blob/34a8b4506a/src/core/ngx_conf_file.c#L615-L625
0312birdzhang
2019-05-24 12:20:34 +08:00
@suriv520 #12 +10086,楼主直接说了结论,都没说发生了什么。
VDimos
2019-05-24 12:21:09 +08:00
我不信这么重要的 bug 会出现在 nginx 这种级别的软件上
ho121
2019-05-24 12:21:32 +08:00
是不是注释那行有什么奇奇怪怪的不可见字符?
suriv520
2019-05-24 12:26:21 +08:00
@0312birdzhang 我个人会尽量避免自带假设或者预设立场的提问,这对于获得知识并不好。且因为这篇帖子已经预设立场了,所以我只是就事论事讨论这个注释的问题。至于发生这个现象的具体原因,我应该是清楚的(源码级的那种清楚),但 who cares,毕竟这不是这篇帖子提出的问题。
brust
2019-05-24 12:39:16 +08:00
好奇有什么区别,一直以为注释是无影响的,楼主 nginx 版本多少
liangzi
2019-05-24 12:42:53 +08:00
docker 的注释也坑...
dyxLike
2019-05-24 12:47:23 +08:00
楼主倒是说清楚啊....哪句注释?产生了什么影响?
aaa5838769
2019-05-24 13:06:49 +08:00
一直以为注释没有任何问题=

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/567235

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX