• ღ_阿水
    2019-02-21
    老师,我想了解下,如果使用了include conf.d/*.conf 这样,包含了多个配置文件,那这个配置文件的加载顺序是怎么样的呢。

    作者回复: 与linux上glob函数输出的文件顺序一致,见http://man7.org/linux/man-pages/man7/glob.7.html

    
     1
  • 苏超
    2019-01-18
    请问老师,那个下划线匹配所有,我自己测试的结果是,如果不和 listen 的 default_server 一起使用的话,好像一个都匹配不到啊?

    作者回复: Nginx对Host与server_name的匹配分为两种:1、匹配上了,就用所属的server{};2、第1步没匹配上,就用default_server。这里所说的_下划线匹配所有,你可以理解为占位符,它只是为了增强可读性(因为是官网上推荐的http://nginx.org/en/docs/http/server_names.html),其实你用任何符号例如!@-效果都一样的。
    就实现层面而言,当Nginx监听同一个端口的server{}超过1个时,就会把这个_符号也放到hash表里。而处理一个请求的Host头部时,就会查这个hash表,而_这样的符号,当然是查不到了,所以就会使用default_server。这就是其实现流程。

    
     1
  • leitiannet
    2019-01-17
    (1)
    server {
        server_name example.com www.example.com;
    }
    The first name becomes the primary server name.

    server {
        server_name example.com *.example.com www.example.*;
    }
    使用星号指定多个域名时,第1个也是主域名吗?

    (2)主域名和默认域名有什么区别?
    展开

    作者回复: 1、是的。
    2、当开启server_name_in_redirect on时,如果URL根据root/alias判定为目录,但url结尾没带/,则返回302,此时location中的域名使用主域名。
    default_server(你是说这个吧?),意思为当监听同一个端口有多个server{}时,若请求中的Host没匹配中任何一个server_name,则使用default_server

    
     1
  • 小小萝
    2018-12-17
    老师,您好!

    最近在配置nginx反向代理时被location后匹配规则和转发机制给绕晕了,希望您给解答一下

    location /test/ {
        proxy_pass http://127.0.0.1
    }

    location /test/ {
        proxy_pass http://127.0.0.1/
    }

    末尾带斜杠,对最后的代理地址会有直接的影响,这是为啥,没想明白
    展开

    作者回复: 当末尾有斜杠时,认为带url了,此时location对请求URL采用替换关系,把location后的url1替换为proxy_pass中的url2。
    第4部分课程中会详细介绍。

    
     1
  • Geek_0b7655
    2020-01-12
    老师真的很用心。

    作者回复: ^_^

    
    
  • Geek_0b7655
    2020-01-12
    1.在nix_event_accept回调函数中,当客户端和nginx框架建立了连接后(accept),创建了connection_pool_size 512字节的连接内存池;
    2.当有客户端数据真正到来时,调用ngx_http_wait_request_handler回调函数,在该函数中才在刚创建的连接内存池中分配出client_header_buffer_size 1k大小的内存,开始接收数据(recv);然后创建请求内存池request_pool_size 4k大小。
    3.在ngx_http_process_request_line处理接收到的请求行时,如果发现请求行太长,large_client_header_buffers 4 8k被分配,看源代码好像仍然是从连接内存池中申请的。
    希望老师能帮忙看下,谢谢老师。
    展开

    作者回复: 对的

    
    
  • jian
    2019-12-29
    老师,我把“include servername_test.conf;”写在nginx.conf的http内,然后执行curl命令,但是返回的应答没有location字段是什么原因呢? 具体应答信息如下:
    HTTP/1.1 200 OK
    Server: openresty
    Date: Sun, 29 Dec 2019 09:07:56 GMT
    Content-Type: text/html; charset=UTF-8
    Connection: keep-alive
    X-Adblock-Key: MFww……
    展开

    作者回复: 你是说,你的配置是想return 302,但实际上匹配上了root/alias指令,返回了一个具体的文件吗?通常是没有匹配上server_name所致。你可以打开debug日志 ,在error.log中找到这个请求到底匹配上了哪一个server_name。具体参见143课。

    
    
  • -Pisces*无敌小婷其...
    2019-03-12
    为什么我没有返回302,返回了200.
    HTTP/1.1 200 OK
    Server: openresty/1.13.6.2
    Date: Tue, 12 Mar 2019 08:47:22 GMT
    Content-Type: text/html; charset=UTF-8
    Connection: keep-alive
    X-Powered-By: PHP/7.2.11
    展开
     1
    
  • 再续啸傲
    2019-02-12
    请问如何将外部自定义的配置文件include到nginx.conf中呢?

    作者回复: 就像这样:
    include mime.types;
    include vhosts/*.conf;
    参看这里:http://nginx.org/en/docs/ngx_core_module.html#include

    
    
  • 思恩森
    2019-01-22
    什么样的请求没有Host头.

    作者回复: 有些不合法的请求没有Host头部

    
    
  • lbz
    2019-01-12
    老师问个配置ssl问题,添加pem文件后,reload时报ngx_reload_5588错误,(上网查没找到原因)。谢谢

    作者回复: 能否把完整的错误字符串粘贴出来?

    
    
  • 王先统
    2018-12-27
    如果没有server_name指令,只有listen指令,是不是只检查端口就行了?不再检查host了

    作者回复: 如果所有server{}都没有server_name,那么唯一的就是default server,host匹配不上其他 server_name时,就会选用它

    
    
  • 王先统
    2018-12-27
    如果没有Host头部呢?是不是使用url中的域名做匹配?

    作者回复: 没有Host头部会报错。

    
    
  • 王先统
    2018-12-26
    server name是和请求中的Host头部做匹配吗?还是和url中的域名做匹配?

    作者回复: 与Host头部匹配

    
    
  • 路飞君1234
    2018-12-13
    系统内核不应该是和master交互,有master进程调用worker进程处理请求么

    作者回复: 不是哦,这样性能可以想见会非常差,环节太多!

    
    
  • 路过
    2018-12-08
    老师,什么场景一下会使用server_name_in_redirect? 如果server_name后面跟3个域名,设置为on时,结果是哪个呢?

    作者回复: 后面在谈到处理/结尾的url时,会深入谈这个指令。大概在说static模块提供的root/alias指令时,你关注下这一课。

    
    
我们在线,来聊聊吧