nginx的使用我们利用企业7版本的主机来实现
server1(172.25.15.1) nginx服务器
真机(172.25.15.250) 用作客户端测试
开始搭建一个最基本的nginx服务器
从官网下载一个nginx的包,在真机上传给虚拟机server1的root家目录下面
在虚拟机server1上开始搭建nginx服务器
ps ax查看一下有没有影响我们实验的进程开启,就看实验环境是否干净
tar zxf nginx-1.17.1.tar.gz解压
cd zxf nginx-1.17.1/
ll搞清楚每一个目录和文件是什么,作用是什么
mkdir ~/.vim建立一个家目录下的隐藏目录
cp -r contrib/vim/* ~/.vim让这个虚拟机的vim可以自动检测配置文件语法是否有错误
在真机上面curl -I www.sina.com不可以看到新浪nginx的版本,发现是不能的
cd nginx-1.17.1/
vim auto/cc/gcc这个里面的debug要注释
vim src/core/nginx.h这个里面的版本要注释,可以隐藏版本
编译安装
./configure --prefix=/usr/local/nginx --with-file-aio(允许大文件输入输出)
在这之前要安装gcc zlib-devel 和 pcre-devel才可以编译
编译完之后ls 会生成Makefile 和 objs
make && make install 安装(只需要做一次)
cd /usr/local
du -sh nginx/ 可以看到注释debug编译安装nginx服务之后的大小,因为在配置文件中关闭了debug日志
执行nginx的启动脚本
有显示nginx的版本为1.17
在真机中curl也可以看到nginx的版本,这样配置其实很不安全,只是实验需要看到版本号,所以没有去掉
上面演示了,不生成debug日志和不注释的效果,下面演示一下生成debug日志和注释的效果
rm -rf /ur/localnginx/
cd ~/nginx-1.16.0
make clean 清除安装之后生成的东西
vim auto/cc/gcc 不注释debug
vim src/core/nginx.h关闭版本显示
./configure --prefix=/usr/local/nginx --with-file-aio(允许大文件输入输出)
make && make install
这次启动nginx然后再次curl发现,并不能看到版本了
真机也看不到
在真机打开浏览器测试一下:172.25.15.1可以看到nginx的欢迎页面
以上就是搭建一个最基本的nginx服务器
nginx服务的基本配置
ps aux可以看到进程运行的用户是匿名用户,这样不安全
在nginx服务器上面建立一个nginx用户,它不可以登录系统,只能运行nginx服务,这样比较安全
vim /usr/local/nginx/conf/nginx.conf编辑nginx服务的配置文件
修改用户和用户组:加入nginx nginx
修改进程个数:2
…/sbin/nginx -s stop关闭之前开启的进程以及服务
cd /usr/local/nginx
./sbin/nginx执行脚本,重新开启服务
ps ax可以看到开启了两个子进程和一个主进程
ps aux | grep nginx可以看到进程开启的用户
master 进程 和 worker 进程。其中 master 进程只有一个,worker 进程可以有多个。
worker 进程才是真正 working 的进程,才是真正处理请求的进程。worker 进程全部都是 master 进程的子进程
worker 进程是以普通用户的身份进行运行的,这样就可以极大增加程序的安全性
就算是万一有一个进程被劫持,那也不会有管理员权限
nginx 的热部署和其并发模型有着密不可分的关系。说白了,就是因为 master 进程的关系
当通知 ngnix 重读配置文件的时候,master 进程会进行语法错误的判断
如果存在语法错误的话,返回错误,不进行装载;如果配置文件没有语法错误,那么 ngnix 也不会将新的配置调整到所有 worker 中
而是,先不改变已经建立连接的 worker,等待 worker 将所有请求结束之后
将原先在旧的配置下启动的 worker 杀死,然后使用新的配置创建新的 worker