Nginx配置文件解读

初始化安装

nginx的安装较为简单,只需在apt更新之后运行命令apt-get install nginx。安装之后在浏览器中访问本机的ip地址,会看到“welcome to nginx”,OK一切正常。

此处说明一下,127.0.0.1、localhost和本机ip的区别。首先localhost是域名,指向的是127.0.0.1这个本机环路虚拟地址,在Windows的hosts文件或Linux的 /etc/hosts 文件中可以看到,访问这二者是不需要联网的,本机IP地址可以由本机或从外部访问,是本机对外开放的地址,这个地址是与物理网卡绑定的IP地址。

查找nginx目录

在通过apt安装nginx后,它为我们提供了一个基本结构,并快速的设置好了配置文件。所有的nginx的配置文件都在 /etc/nginx/ 下(此处只提供了Linux环境下的配置文件位置,Mac环境中使用homebrew安装的配置文件的位置与Linux环境有所不同)。需要添加新的配置的位置在 /etc/nginx/sites-enabled/,在此目录下包含一个default文件,这个文件就是nginx首页的默认配置文件。接下来尝试建立自己的配置文件用于显示一个页面。在sites-enabled目录下新建一个空白文件命名为test,然后进行编辑。

  • 注意: 在 /etc/nginx/ 目录下包含一个sites-available目录,这个目录一般在需要建立和管理多个站点的时候非常有用,可以帮助你更好的组织不同的项目,你需要在这里添加你的nginx配置文件并将它们链接至sites-enabled目录下,命令如下:
  • ln -s /etc/nginx/sites-available/dotcom /etc/nginx/sites-enabled/doctom
只有在 sites-enabled 目录下的配置文件才能真正被用户访问,但是同样可以将文件放在site-available目录下用来存档或者生成链接

配置静态服务器

Nginx配置文件有自己的格式,好消息是格式相当简单,看起来想css文件,先制定变量名,然后在花括号中编写命令,最顶层是server代码:

server {

}

  • listen 声明服务器监听的端口号。SSL在443端口,http默认端口是80,因此在URL中未定义端口的话一般为80,因为很有可能是去运行一个线上的服务器,因此最好定义监听端口为80。

    server{
    	listen 80;
    }
    

    默认端口严格来讲不是必要的,但是为了能够保证对整个流程足够了解,最好加上。接下来进入server_name

  • server_name 主要用来匹配URL地址,任意请求通过nginx时,它会查看URL并寻找server_name片段,如果你的站点是http://acmer.com,那么server_name应该为acmer.com,如果在域名解析时用了A记录并通过服务器指向http://xxx.com,你可以添加另外一个server代码,将server_name指向xxx.com,这段代码就会匹配来自这个域名的请求。

  • 这个特性非常强大,这意味着你可以在单个nginx配置文件里托管无数站点,甚至包括不同域名的网站,你需要做的只是讲设置A记录并指向主机所在的IP,之后设置其他的nginx服务器配置。

  • 针对server_name还有两点需要关注,首先是可以设置子域名。如果想要匹配http://test.example.com,设置相当简单,甚至可以指向一个完全不同的应用。第二是可以使用通配符,或者正则匹配路由。下面简单配置下server_name到example.com

server {
	listen 80;
	server_name example.com
}

Nice,再进行一些配置就可以运行服务器了。

  • root
    这个是托管静态站点最关键的部分,如果只是想托管一些html和css文件,root部分要定义这些文件存放的路径,我喜欢把文件放在/var/www/目录下,因此在这个目录下建立一个目录,/var/www/example/,在这个目录下新建一个空表的html文件,随意输出一些代码
server {
	listen 80;
	server_name example.com;
	root /var/www/example;
}

基本变量配置完毕,下一步配置路由。

  • location 接收两个参数,一个字符串或正则表达式,和一段代码。字符串或正则用于匹配一个特定目录,如果你想让用户在访问example.com/whatever 时访问某个特定的页面,需要将whatever 设置为uri地址,在这里我们只要访问root目录,因此只需加上 / 内容暂时为空,稍后解释。
server {
	listen 80;
	server_name example.com;
	root /var/www/example;
	
	location / {
	
	}
}

第一个参数可以有很多种写法。在以上区块内,我们需要路由指向结果页面,注意 / 会匹配所有的URL地址,因为在这里它被解释成一个正则,如果指向匹配某一个准确的字符串,主需要在上面加一个等号。

location = / {...}

现在我没要完成之前的代码,我们可以在区块内添加另一段指令,用于加载名为try_files的文件。 try_files接收一组文件名或正则,用于在根目录下查找,并会加载找到的第一个结果。对于我们的静态服务器来讲,我们希望找到一个在 / 之后紧跟着whatever的文件,例如:whatever.html,如果在 / 后面没有任何内容,则会寻找 index.html。这里我们进行简单的配置。

server {
	listen 80;
	server_name example.com;
	root /var/www/example;

	location / {
			try_files $uri $uri/ /index.html
	}
}

你可能会奇怪上面的$uri是从哪来的?其实是nginx提供的。每次有请求时,nginx会生成一系列变量,这些变量存储了请求的相关信息。

  • 来自http://example.com的请求进入。
  • nginx找到server片段代码,其中server_name为example.com,并使用它来处理请求。
  • nginx匹配任意请求。因为这里的 / 会匹配根域名下的任意内容。
  • 在匹配到的location代码中,nginx开始尝试加载一个文件。首先寻找一个未命名的文件,因为这里的uri匹配的就是没有名称的文件,所以无法找到,接着开始查找未命名的目录,依然无法找到,最后开始查找并加载根目录。下的 /index.html。

接下来想象一下如果添加一个名为test.html的文件到根目录下并访问 http://example.com/test.html,可以自己尝试一下。

可以任意的尝试修改这里的配置变量。例如,在访问一个网站时,用户访问某一个文件并没有加上 .html 的后缀,try_files同样会查找 $uri.html 并匹配相应的结果,因此在访问 http://example.com/whatever和http://example.com/whatever.html会得到相同的文件,你可以充分发挥想象力设置配置文件。

启动服务

总结一下配置的步骤。首先添加server选项,在nginx运行时,会查找 /etc/sites-enabled 目录下的所有配置文件用于显示对应内容。但是请等一下,你可能无法马上得到结果,因为nginx并不知道你所做的改动。为了让nginx真正读取到配置文件,需要重启服务器
service nginx reload

  • 注意:
    这里service命令实际上是调用了配置文件里的内容,这些都在使用apt是被生成。这里调用的实际上是 /etc/init.d/nginx reload
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx是一个高性能的Web服务器、反向代理服务器和负载均衡服务器。它的配置文件nginx.conf,其语法类似于其他的配置文件,如Apache的httpd.conf。下面对nginx配置文件进行解读: 1. http块 http块是nginx配置文件的主要部分,包含了nginx的全局配置和http服务器的配置。 2. server块 server块是http块中的一个子块,用来配置一个虚拟主机。每个server块都有自己的listen指令,用来指定该虚拟主机监听的IP地址和端口号。 3. location块 location块是server块中的一个子块,用来匹配请求的URI,并指定相应的处理方式。location块的匹配规则和正则表达式有关,常用的匹配方式包括: - 精确匹配:location = /uri - 前缀匹配:location /uri - 正则匹配:location ~ /reg_exp 4. upstream块 upstream块用来定义一组服务器,用于反向代理和负载均衡。每个upstream块包含多个server指令,每个server指令表示一个后端服务器。 5. include指令 include指令用来引入其他的配置文件,可以使nginx配置文件更加模块化和易于维护。 6. log_format指令 log_format指令用来定义日志格式,可以自定义日志输出的内容和格式。 7. error_page指令 error_page指令用来指定错误页面的路径,可以根据HTTP状态码自定义错误页面。 8. rewrite指令 rewrite指令用来重写URI,可以将请求的URI重写为其他的URI。 9. proxy_pass指令 proxy_pass指令用来指定反向代理的目标服务器,可以将请求转发给指定的后端服务器。 以上是nginx配置文件的一些常用指令和语法,理解这些指令和语法可以帮助我们更好地配置nginx服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值