nginx网站服务
nginx的了解
nginx的特性:
1.io多路复用
2.高性能
3.高并发
4.占用资源少
nginx有哪些优点?
1.跨平台,配置简单
2.非阻塞、高并发连接:处理2-3万并发连接数,官方检测能支持5万并发,而apache只能1万。
3.内存消耗小
4.成本低,且开源
5.稳定性高,宕机概率非常小
6.内置健康检查功能:如若服务器宕机,会做健康检查,之后收到的请求就不会发送给宕机服务器了,转而发送给其他节点。
nginx应用场景
1.http服务器
2.虚拟主机
3.反向代理,负载均衡
4.安全管理
5.可以做缓存服务器
nginx和apache的区别
nginx | apache |
---|---|
nginx是一个基于时间的web服务器 | apache是一个基于流程的服务器 |
所有请求都由一个线程处理 | 单个线程处理单个请求 |
nginx避免子进程的概率 | apache是基于子进程的 |
nginx占用资源和内存少 | apache占用资源和内存多 |
处理请求异步非阻塞,在高并发下能保持低资源,低消耗,高性能 | 处理请求阻塞 |
编写模块简单 | 编写模块复杂 |
编译安装nginx
编译安装过程
cd ?/opt
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf ? nginx-1.18.0.tar.gz
cd ?nginx-1.18.0
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl ?openssl-devel?
#请使用网络源
mkdir /apps/nginx -p ? ?
./configure ? --prefix=/apps/nginx
make
make ?installln -s /apps/nginx/sbin/nginx ? /usr/sbin/nginx?
#做软链接 ? 可以补全 ?
nginx ??
#直接启动
?
检查、启动、重启、停止Nginx服务
检查配置文件是否配置正确
nginx -t ?
启动
nginx
停止nginx
#先查看nginx的pid号
cat /usr/local/nginx/logs/nginx.pid
kill -3 pid号? ? ? ? ? ? ? #可以优雅的停止进程:让他先把事情处理完再解决
killall -3 nginx
kill -s quit (pid号)
killall -s quit nginx
nginx -s stop 停止nginx
nginx -s quit 停止nginx
重载
kill -1 (pid号)
kill -s hup (pid号)
killall -1 nginx
killall -s HUP nginx
nginx平滑升级的步骤
1.首先先去官网上下载新版本的软件包
tar -zxvf nginx-1.xx.xx.tar.gz
2.进行解压配置编译
cd nginx-1.xx.xx
./configure \ --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module
make
3.生成二进制文件,将老版本二进制文件进行备份,防止版本回退
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
4.把更新好的程序复制过来进行替换
cp objs/nginx /usr/local/nginx/sbin/nginx
5.执行make upgrade,完成平滑升级
? 或者先killall nginx,再/usr/local/nginx/sbin/nginx
nginx的最大并发如何查看和设置
理论上查看nginx最大并发:查看他的配置文件
vim /usr/local/nginx/conf/nginx.conf
worker processes (worker工作进程数,一般设置与CPU数量相同,或auto)
*worker_connections (每个worker进程能够处理的连接数)
真正实现的话要去设置
应用级别的打开文件数和系统级别的打开文件数
应用级别:
worker rlimit nofile (worker进程最大可以打开的文件数)
系统级别:
ulimit -n
/etc/security/limits.conf
nofile?
认识nginx服务的主配置文件
vim /usr/local/nginx/conf/nginx.conf
1.全局块:全局配置,对全局生效
2.events块:配置影响nginx服务器与用户的网络连接
3.http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
4.server块:配置虚拟主机的相关参数,一个http块中可以有多个server块
5.location块:用于配置匹配的uri
6.upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分
1.全局配置
user nobody
#运行用户,默认为nobody
worker_processes 1
#设置进程数,设置为auto,nginx将会自己获取这个数值
error_log logs/error.log
#错误日志文件的位置
pid logs/nginx.pid
#pid文件的位置
worker_rlimit_nofile 65535
#设置所有worker进程最大可以打开的文件数,默认为1024
2.I/O事件配置
events {
? ? ? ? ?? use epoll;
? ? ? ? ? #使用 epoll I/0模型,2.6及以上版本的系统内核,建议使用epoll模型以提高nginx性能
? ? ? ? ?? worker_connections 65535;
? ? ? ? ? #设置进程连接数,每个进程处理 65535 个连接
}
#永久设置可打开最大文件数 vim /etc/security/limits.conf nginx hard nofile 10000 用户名 硬限制 最大进程数 进程数
ulimit -a #查看可同时打开文件数
3、HTTP 配置
http {
? ??##文件扩展名与文件类型映射表
? ? ? ? ?include ???? mime.types;
? ?##默认文件类型
? ? ? ? ?default_type application/octet-stream;
? ?##日志格式设定???#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
???# ?????????????? '$status $body_bytes_sent "$http_referer"
???# ?????????????? '"Shttp_user_agent" "$http_x_forwarded_for"' ;
???? ? ##访问日志位置
? ? #access_log logs/access.log ?main;
??? ? ##支持文件发送(下载)
? ? sendfile ??on;
? ? ##此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
? ? #tcp_nopush ?on;
???? ?##连接保持超时时间,单位是秒
???#keepalive_timeout 0;
? ? ?keepalive_timeout 65;
???? ##gzip模块设置,设置是否开启gzip压缩输出
? ? ?#gzip on;
?
???##Web服务的监听配置
???server {
? ? ? ?? ? ? ? ? ? ##监听地址及端口
? ? ? ? ? ? ? ?listen 80;
???????? ? ? ? ? ?##站点域名,可以有多个,用空格隔开
? ? ? ? ? ? ?server name www.kgc.com;
???????? ? ? ? ?? ##网页的默认字符集
? ? ? ? ? ?? charset utf-8;
??????? ? ? ? ? ?##根目录配置
? ? ? ? ? ? ? location / {
? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ##网站根目录的位置/usr/local/nginx/html
? ? ? ? ? ? ? ? ? ? ? root html ;
? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?##默认首页文件名
? ? ? ? ? ? ? ? ? ? ? index index.html index.php;
? ? ? ? ? ? ? ?? }
? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ##内部错误的反馈页面
? ? ? ? ? ? ?? ?error_page 500 502 503 504 /50x.html;
? ? ? ? ? ? ??? ? ? ? ? ? ? ? ##错误页面配置
? ? ? ? ? ? ? ??location = /50x.html {
? ? ? ? ? ? ? ? ?root html;
? ? ? ? ? ? ? ?}
? ? ?? }
}
?
日志格式设定:
$remote_addr(记录的是上个节点的ip)与$http_x_forwarded_for(会记录数据包经过的所有的ip)用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url路径与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小(响应体大小);
$http_referer:用来记录从哪个页面链接访问过来的(如果数据包经过转发他会记录下
来);
$http_user_agent:记录客户浏览器的相关信息;
nginx的root和alias指定路径的区别
root:根目录
location ?/test {
? ? ? ? root/var/www;
}
处理方式:root路径+location路径 ?
?http://192.168.116.40/test/abc.html ? ——> /var/www/test/abc.html
alias:虚拟目录、别名目录
location/test ?{
? ? ? ? ?alias /var/www;
?
}处理方式:alias路径替换location路径 ?
http://192.168.116.40/test/abc.html ———>/var/www/abc.html
nginx访问状态统计
1.安装时添加--with-http_stub_status_module模块
2.修改nginx配置文件添加stub_status on; (开启状态统计功能) access_log 0ff;配置
3测试验证curl -Ls xxx
nginx 授权访问控制
安装htp
1.使用htpasswd生成用户认证文件,并修改权限和归属
2.修改nginx配置文件添加auth_basic auth_basic_user_file(指定认证文件路径)配置
3.测试验证
nginx客户端访问控制
http{ } :所有站点生效
server{ }:只在当前站点中生效
location{ }:只在当前站点的指定URL路径进行生效
在他们中添加配置
白名单:allow ip/网段(一行只能配置一个ip或者网段)
deny all
黑名单:deny ip/网段
nginx虚拟主机:server { }
基于域名:server_name
基于ip:listen ip:端口(根据不同的ip)
基于端口:listen ip:端口(根据不同的端口)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!