zoukankan      html  css  js  c++  java
  • Nginx 配置文件介绍

    1. nginx.conf 如下:

    就是因为有上述配置的存在,nginx才能为我们提供一个默认的http服务, 我们暂且先放下这个配置文件不管,来聊聊nginx的基本配置语法,等聊完这些基本语法,再来看上图中的配置,就简单多了。

    2、先来说说最常用到的配置语法,示例如下:

    http {
        
        ...
        ...
        
        server {
            ...
            ...
            
            location ... {
                    ...
                    ...
            }
            
        }
     
        server {
            ...
            ...
        }
        
     
    }

    http中可以配置多个server,一个server中可以配置多个location。

    nginx最基础的功能就是用来提供http服务,所以,跟http有关的公共配置,可以放置在http块中,http块中又可以配置多个server。

    每一个server就代表一个http服务,我们可以同时配置多个server,以便同时提供多个http服务,不同的server可以使用不同的配置,写入到某个server块中的配置只对对应的http服务生效,如果多个server存在共同的公用配置,则可以将共同的配置写在http块中,以便多个server共享这些配置。

    一个server块中又可以有一个或多个location,你可以把location当做url的一部分

    location可以理解成url的一部分,那么当我们访问"http://10.1.1.72/"这个url时,这个url的最后一个"/"其实就是上图中的"location /

    ",换句话说就是,上图中红线标记出的"/"其实对应的就是"http://10.1.1.72/"这个url的最后一个"/",这个location块中有两条配置指令,它们分别是root和index,root配置项是什么意思呢?root配置指令的意思是:当前location所对应的文档根目录是哪里,"root html;"表示当前location的文档根目录是html目录,那么"文档根目录"又是什么意思呢?说白了,文档根目录的意思就是当有人访问"/"这个路径时,去服务器的哪个目录中找对应的资源,举个例子,如果我在html目录中放了一张图片,图片名为a.jpg,那么我就能通过"http://10.1.1.72/a.jpg"访问到这张图片,url中的"/"对应了"location /"配置段,而"location /"又对应到了服务器的html目录,所以,url中的"/"就与服务器的html目录建立了对应关系,当我们访问"http://10.1.1.72/a.jpg"这个地址时,其实访问的是服务器上html目录中的a.jpg,再换句话说,html目录就是当前location的资源目录。注意,上例中的html路径是一个相对路径,表示nginx安装目录中的html目录,因为我将nginx安装到了/srv/nginx目录中,所以上例中的html目录的绝对路径就是"/srv/nginx/html/",你可以在"/srv/nginx/html/"目录中放一张a.jpg图片,然后尝试使用"http://10.1.1.72/a.jpg"这个地址访问它,其实,要想完全搞明白location还是要费一番口舌的,不要怕,后面会有专门总结location的文章。

    说完root指令,再聊聊index指令,index指令表示当没有指明任何资源时,默认访问哪个资源,什么意思呢?仍然拿刚才的url作为示例,当我们访问"http://10.1.1.72/a.jpg"这个地址时,nginx知道我们想要获取a.jpg这张图片资源,但是如果我们直接访问"http://10.1.1.72/"这个地址,没有指明我们想要获取什么,那么nginx会默认去把index.html或者index.htm返回给我们,原因就是上图中配置的"index  index.html index.htm;"起的作用

    通过编译安装的方式安装nginx以后,默认的"server块"直接配置到了nginx.conf文件中,而通过官方yum源安装nginx后,默认的"server块"会配置在"/etc/nginx/conf.d/default.conf"文件中,换句话说就是,如果你通过官方yum源安装了nginx,那么你在/etc/nginx/nginx.conf文件中无法找到默认提供的server块,只能在/etc/nginx/conf.d/default.conf文件中找到默认的server块,这是为什么呢?其实,我们从/etc/nginx/nginx.conf文件中就能找到答案,打开/etc/nginx/nginx.conf文件,查看默认的http块的配置,你会在http块中发现如下配置指令

    出现上述情况的根本原因就在于这条配置指令,include指令表示将指定的文件中的内容包含到当前位置中,举个例子,如果我在http配置块中的第三行设置了"include  test.conf;"指令,那么test.conf文件中的所有内容都会替换到http配置块的第三行,换句话说就是,虽然文本内容写在test.conf文件中,但是通过include指令替换后,相当于test.conf中的文本写在了http块中的第三行。

    那么,理解了include指令的作用以后,再回过头看刚才的配置,就一目了然了。

    "include /etc/nginx/conf.d/*.conf;"这条指令的作用就是将"/etc/nginx/conf.d/*.conf"文件中的内容替换到当前指令所在的位置,由于使用了"*"作为通配符,所以/etc/nginx/conf.d/目录中所有以".conf"作为后缀名的文件都会被匹配到,/etc/nginx/conf.d/default.conf文件自然也会被匹配到,所以最终,http块中include指令所在位置的文本内容会被替换成/etc/nginx/conf.d/default.conf文件中的内容,而/etc/nginx/conf.d/default.conf文件中的内容恰好是默认提供的server块配置,当然,如果你在/etc/nginx/conf.d/目录中放了一些其他以".conf"结尾的文本文件,那么这些文件中的内容也会因为刚才的include指令而被包含到nginx.conf文件中。

    综上所述,通过官方yum源安装nginx后,虽然/etc/nginx/nginx.conf文件中看不到默认server块的配置,但是并不代表没有提供默认的server块配置,只是通过include指令的方式,将默认server块的配置单独放置在了/etc/nginx/conf.d/default.conf文件中,最终效果与直接将server块配置写入到http块中无异。其实,即使是通过编译安装的方式安装的nginx,也可以借鉴这种配置方式,当我们配置了多个server块时,可以将各个server块分别提取出来,单独放置到一个配置文件中,然后再使用include指令引用对应的配置文件,这样就能从逻辑上将各个server块的配置隔离到不同的配置文件中,结构上更加分明,也方便我们进行配置管理,这些操作在以后都会进行实际的演示,不必着急,此时,你只要搞明白大概的原理即可。

    通过官方yum安装后,如果你查看了/etc/nginx/conf.d/default.conf中提供的默认server块配置,那么你会发现,默认server块中的location块配置的root指令对应的路径是"/usr/share/nginx/html",也就是说,默认提供的server对应的文档根目录是此路径,我们需要将对应的资源放置到此目录中,即可通过默认的服务进行访问了。

  • 相关阅读:
    归并排序
    边割集
    NBUT 1225 NEW RDSP MODE I 2010辽宁省赛
    NBUT 1218 You are my brother 2010辽宁省赛
    NBUT 1220 SPY 2010辽宁省赛
    NBUT 1219 Time 2010辽宁省赛
    NBUT 1223 Friends number 2010辽宁省赛
    NBUT 1217 Dinner 2010辽宁省赛
    第七届蓝桥杯个人赛省赛--C语言B组
    2017广东工业大学程序设计竞赛决赛 tmk买礼物
  • 原文地址:https://www.cnblogs.com/leolzi/p/13343568.html
Copyright © 2011-2022 走看看