nginx之server模块 发布静态网站 多网站部署
2019-06-12 本文已影响0人
在路上phper
首先我们看下nginx基本组成
![](https://img.haomeiwen.com/i2509361/41cfe50f4a292221.png)
基本运行结构如上面图中所示 nginx启动时有个master进程(主进程)来生成(worker
)工作进程 客户端请求各个工作进程(worker进程会进程处理)
接下来看下nginx主要配置文件(nginx里面配置文件可具备编程性)
![](https://img.haomeiwen.com/i2509361/9057a840a2e08bf8.png)
![](https://img.haomeiwen.com/i2509361/df36214aa7d0fb0f.png)
接下来我们学习下http模块下面的子模块server模块(可以用来发布虚拟主机 也就是网站)
首先修改下上节课从docker中拷贝出来的默认nginx配置文件
接下来我们修改配置文件 配置一个简单的静态网站
![](https://img.haomeiwen.com/i2509361/ca35926602413a92.png)
以上是一个基本的server模块 也就是一个基本的网站
location节点表示对请求路径做的配置 / 表示匹配所有(支持正则) 还有优先级区别
location节点里面的 root指令 表示的是 请求访问静态资源网站根目录的位置
index 表示的是默认首页面(可以写多个)
接下来我们在上节课myngx目录下的nginx.conf配置文件中加入 server配置节
如下
![](https://img.haomeiwen.com/i2509361/e4e4abc5ba9bfae8.png)
保存 退出
由于我们使用的是docker容器 我们需要把相关的配置文件映射到容器里面对应的配置文件
![](https://img.haomeiwen.com/i2509361/98e52f171ab4d784.png)
首先在物理机上(即启动的vmvare上)的myngx文件夹下创建个新的html文件夹
在终端中输入如下
![](https://img.haomeiwen.com/i2509361/3e4876874eb268c0.png)
然后进入html目录
执行echo "<b>index</b>" > index.html
这句表示在index.html中写入内容
以上就是静态文件的内容
有了这些内容后就可以把物理机和容器进行映射
首先我们删除上节课运行的容器
![](https://img.haomeiwen.com/i2509361/e644603b8854e7ff.png)
接下来进行文件夹映射(物理机文件夹和文件映射到容器中文件夹和文件)
docker run --name ngx -d --rm
-p 80:80
-p 8081:8081
-v /home/bhc/myngx/html:/tmp/html
-v /home/bhc/myngx/nginx.conf:/etc/nginx/nginx.conf
nginx:1.17-alpine
这里的第一行启动容器并进行目录映射加入了 --rm 是为了删除容器方便
以后想要删除容器 直接docker stop ngx就可以了
前面说过 --name指定容器名字 -p端口映射 -v目录映射 冒号前面是物理机上目录 冒号后面是容器里面的目录
![](https://img.haomeiwen.com/i2509361/fda44cd22cf9313a.png)
执行命令如下
![](https://img.haomeiwen.com/i2509361/d6e08f80f18c73eb.png)
可以看见容器启动出来了 并且映射了两个端口 80 和8081
现在只有80可以起作用 因为配置文件中只配置了80
下面可以直接访问网站
直接浏览器输入物理机的ip即可访问(因为做映射了)
![](https://img.haomeiwen.com/i2509361/f430c2ac8528e48e.png)
可以看见输出了我们在index.html文件中的内容了
同理加上后缀index.html也可以访问
![](https://img.haomeiwen.com/i2509361/8d56e8f672647372.png)
以上就是简单的静态网站发布
那么如何发布多网站呢
![](https://img.haomeiwen.com/i2509361/7f124f27389c3f9a.png)
就是在nginx配置文件中在加入一个server配置
物理机上myngx目录下的nginx.conf文件添加如下
![](https://img.haomeiwen.com/i2509361/84092835d8b63734.png)
重启nginx
docker restart ngx(重启容器名)
![](https://img.haomeiwen.com/i2509361/397f301ad5c07dad.png)
接下来在html文件夹下创建abc.html 里面输入<b>abc</b>
用来作为8081端口网站的访问首页面
最后看下运行结果
![](https://img.haomeiwen.com/i2509361/298ba209eef410d8.png)
![](https://img.haomeiwen.com/i2509361/05d310c8ec7b676b.png)