使用Nginx搭建一个静态web服务器
1. 理解Nginx配置文件语法
conf目录中存放了nginx相关的配置文件
nginx主配置文件为nginx.conf
可以使用sed命令
去掉配置文件中的注释,这样可以更方便的查看与操作:
sed -i '/^[[:space:]]*#/'d nginx.conf
其中的语法为:
http {
...
...
server {
...
...
location ... {
...
...
}
}
server {
...
...
}
}
从上述语法配置示例可以看出:上述示例可以分为几个逻辑部分,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的一部分。此处,我们使用如下url作为示例:
http://www.haha.org/haha/1591
,上述链接中的/haha
部分就是一个location, 我们可以通过location将url的路径和服务器的某个目录建立起关联关系。再比如当我们访问"http://172.25.1.1/"
这个url时,这个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
http {
include mime.types;
default_type application/octet-stream;
upstream kane {
server 172.25.1.2:80;
}
...
server{
listen 80;
server_name www.kane.org;
location / {
proxy_pass http://kane;
}
}
nginx -t #语法检测
nginx -s reload #在不暂停服务的情况下重新加载
step2 写默认发布页面
在server2中:
yum install httpd -y
vim /var/www/html/index.html
server2
systemctl restart httpd
step3 添加解析
在客户端(真机)中:
vim /etc/hosts
172.25.1.1 www.kane.org
step4 测试
在客户端(真机)中:
curl www.kane.org