高性能服务器—nginx(三)—配置文件语法及反向代理
1.理解配置文件语法
conf目录中存放了nginx相关的配置文件
nginx主配置文件为nginx.conf
其中的语法为:
从上述语法配置示例可以看出:上述示例可以分为几个逻辑部分,http部分、server部分、location部分
或者说,上述示例可以分为几个逻辑块:http块、server块、location块,每个"配块"都是使用大括号{ }
作为分界线的。
而且从缩进可以看出,它们是有层级关系的。http中可以配量多个server,一个server中可以配多个location。
我们知道,nginx最基础的功能就是用来提供http服务,所以跟http有关的公共配置,可以放在http块中,http块中又可以配置多个server
- 那么server代表了什么呢?我们在一台主机中安装了nginx,那么能不能让这台nginx主机同时提供多个web服务呢?答案是肯定的。每一个server就代表一个http服务,我们可以同时配多个server,以便同时提供多个http服务,不同的server可以使用不同的配置,写入到某个server块中的配只对对应的http服务生效,如果多个server存在共同的公用配置,则可以将共同的配写在http块中,以便多个server共享这些配置,一个server块中又可以有一个或多个location。
- location又是什么意思呢?当我们访问一个网络上的资源时,都是通过url访问的。你可以把location当做url的一部分。那么当我们访问"http://172.25.254.1/"这个urI时,这个url的最后一个
"/"
其实就是location
- location块中有两条配通指令,它们分别是root和index
root配置指令的意思是:当前location所对应的文档根目录是哪里,root html;
表示当前location的文档根目录是htmI目录。 - 那么"文档根目录"又是什么意思呢?说白了,文档根目录的意思就是当有人访问"/"这个路径时,去服务器的哪个目录中找对应的资源
举个例子
如果我在htmI目录中放了一张图片,图片名为a.jpg,那么我就能通过"http://172.25.254.1/a.jpg"访问到这张图片
url中的"/"对应了"location /"配置段,而"location/"又对应到了服务器的htmI目录,所以url中的"/"就与服务器的html目录建立了对应关系
当我们访问"http://172.25.0.1/a.jpg"这个地址时,其实访问的是服务器上htmI目录中的a.jpg
再换句话说,htmI目录就是当前location的资源目录。
注意:上例中的htmI路径是一个相对路径,表示nginx安装目录中的html目录,因为我将nginx安装到了/usr/local/nginx目录中
所以上例中的html目录的绝对路径就是"/usr/local/nginx/html/"
2.制作静态web服务器
注意:这个实验需要虚拟机server1和server2,其中server1作为nginx服务器,server2安装apache服务
step1 修改配置文件
在server1中:
cd /usr/local/nginx
cd conf/
vim nginx.conf
17 http {
18 include mime.types;
19 default_type application/octet-stream;
20 upstream westos {
21 server 172.25.254.2:80; #代理哪个服务器就写哪个服务器的ip
119 server {
120 listen 80;
121 server_name www.westos.org;
122 location / {
123 proxy_pass http://westos;
124 }
125 }
nginx -t #语法检测
nginx -s reload #在不暂停服务的情况下重新加载
step2 写默认发布页面
在server2中:
yum install httpd -y
vim /var/www/html/index.html
systemctl restart httpd
step3 添加解析
在客户端(真机)中:
vim /etc/hosts
172.25.254.1 www.westos.org
step4 测试
curl www.westos.org