nginx与apache的对比
nginx优点
nginx使用场景
编译安装nginx过程
1.先清空opt文件夹
2.关闭防火墙,关闭防护
3 安装依赖包,可以通过本地yum去安装 首先就是挂载,随后切换到配置文件中修改
4本地配置文件配置内容
5 随后安装环境包
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
6 创建一个nginx的用户
7 接下来编译安装,首先切换到opt里面,将在官网下载的包拉入到xshell
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
注意因为是新版的安装包,必须安装openssl-devel
8 下载
9 做一个软连接 为了让系统识别nginx
没做软连接之前,系统识别不了nginx
补充说明:如果正确使用sbin 或bin
查看第三方程序在哪个里面 pwd可以查看,如果在sbin就用sbin 如果在bin,就用bin
解析为什么软连接的的路径 make install生成安装目录 才会有nginx
有两种方法可以识别nginx
1.echo $PATH,将nginx的路径加入到此文件中
2.做软连接
查看语法是否有误
开启nginx进程 并且查看
master process:是nginx的主进程,用来管理worker process进程,并且可以读取配置文件
worker process:工作进程,用来处理客户的连接请求
停止nginx
1.先查看nginx的pid号 pid号在logs目录里面
pid号与主进程号是一样的
杀除进程号
killall -3 nginx中killall是根据进程名杀除,但是会出现误杀。
重载
或者使用nginx的-s选项 可以通过--help查看
如果要停止nginx,可以使用nginx -s quit 随后使用lsof -i :80 去检验
如果想使用重载,则使用nginx -s reload
平滑升级:就是在不关闭nginx的情况下,升级nginx
举例说明,先在官网下载一个最新版本的nginx,1.25
随后,查看自己的nginx版本号,nginx -v
将最新版本的nginx挪到xshell中
然后使用./configuer 跟make 即可 不需要使用make install (怕会被覆盖)
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
随后查看一下,会生成objs的文件夹,此文件夹中,就存在25版本的文件
接下来要做替换,先找到24版本的nginx,改个名字
改完名字之后,再切换到25版本中的objs(因为里面有25版本的nginx的二进制文件)
接着,去24版本的路径中去查看
接着,继续切换到25版本的路径中
最后证实一下
或者通过客户端去访问服务端
日志分割
举例说明: 将多余的移动到别的文件夹中,相关nginx的目录就没有了,使用日志分割,会重新生成新的文件,再次让nginx文件生成
创建nginx自启动文件,或者称为 利用systemctl 去管理nginx
vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000[Install]
WantedBy=multi-user.target
[Unit]
Description=The nginx HTTP and reverse proxy server[Service]
PIDFile=/apps/nginx/logs/nginx.pid
ExecStart=/apps/nginx/sbin/nginx
ExecStop=/usr/bin/kill -s TERM $MAINPID
ExecReload=/apps/nginx/sbin/nginx -s reload
[Install]
WantedBy=multi-user.target
认识nginx里的主配置文件
全局配置
在全局配置中的文件数要跟event配置中的进程处理连接数要相同!!
补充:如果要向提高每个工作进程的连接数,上面文件数跟连接数只是在程序上面设置,系统也要设置。
临时修改 ulimit -n 数字
缺点:服务器重启之后,就会还原变成默认值1024
永久修改: 进入、etc/security/ (进入重要的配置文件中)
验证:
重启服务器
验证一下,成功
问题展示:
如果想要服务器添加5万并发,该如何设置(服务器有2个cpu) 系统设置(设置最大能打开的文件数)+程序设置
第一步:先查看cpu数量 (有两个,所以五万除以2,所以每个进程的文件数跟连接数改为25000,五万的一半)
第二步 在nginx主配置文件中修改 主进程数、文件数、连接数、use epoll
以上步骤为在程序中设置最大的进程数,同时系统也要设置
第三步 在/etc/security/中配置最大打开的文件数
要重启
第四步保存后退出,并且重启nginx服务
验证一下:
打开第二终端(相同)查看进程号
查看max open files 为25000成功
正常的并发数量:文件数*连接数 此时nginx为网站服务器
反向代理=文件数*连接数 /2 此时nginx为代理服务器
nginx要处理 客户端过来的连接 还有 给客户端服务器发来的连接
http配置
例如,当在网页中访问自己的主页,
这个里面的格式就是因为http中main决定的。
web服务监听设置
访问前缀为ky33时,就是从/var/www/html中去找到abc.html文件
访问前缀为ky35时,就是从/var/www/root中去找到abc.html文件
root是路径
解析 :先把ky33当做文件去看,会优先访问这个目录有没有ky33这个文件,如果有直接返回,如果没有,则把ky33当做目录,去目录里面找index.html文件,如果还是没有则出现404报错
举例说明
在nginx.conf配置文件中修改内容
在conf配置文件中建立var文件夹,再分别在www web里面建立ky33 ky35的目录,并且写入文件内容
最后重启一下nginx服务
进入网页中输入网址
成功
alias别名
举例说明,在ky35中,将root改为alias,然后去访问网页,会显示错误,在nginx.logs里面看一下错误日志
因此,只需要在web文件夹中在建立一个abc.html的文件即可
然后再访问网页,成功
root与alias
nginx访问状态统计设置 (nginx是一个网站,要看当前并发量、处理多少连接、多少人访问)
第一步查看模块是否下载
nginx -V
模块设置
如果想关闭模块前面加without 想开启 加 with
第二步 开启模块
进入到nginx.conf的配置文件中修改