目录
一、Nginx的服务基础
1、Nginx是一款高性能、轻量级Web服务软件
2、市面上常用的web服务有:
3、Nginx 与 Apache的区别
4、Nginx的应用场景
5、Nginx安装
编辑
6、Nginx的主配置文件 nginx.conf
二、Nginx访问控制
1、Nginx 有哪些进程?
2、nginx 的 root 和 alias 指定路径的区别?
三、Nginx虚拟主机
1、基于域名的虚拟主机
2、基于IP的虚拟主机
3、基于端口的虚拟主机
一、Nginx的服务基础
1、Nginx是一款高性能、轻量级Web服务软件
- 稳定性高
- 系统资源消耗低
- 对HTTP并发连接的处理能力高
- 单台物理服务器可支持30 000~50 000个并发请求
2、市面上常用的web服务有:
Apache:稳定性高
Nginx:处理静态能力强 能处理3-5万并发
3、Nginx 与 Apache的区别
- 最核心的区别就是 Nginx是异步非阻塞机制 多个连接可以对应一个进程;Apache是同步多进程模型,一个连接对应一个进程
- Nginx 抗并发能力强
- Nginx 内存资源消耗少
- Nginx 配置简单
4、Nginx的应用场景
用作web服务,处理静态页面请求
用作虚主机,实现一个服务器用于做多个请求
用作反向代理,负载均衡,可以作为网关服务器接收客户的请求转发给节点服务器集群
5、Nginx安装
安装依赖包
useradd -M -s /sbin/nologin nginx 创建用户
然后 make && make install 编译安装
优化路径
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
添加 Nginx 系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service 添加权限
systemctl start nginx.service 启动nginx
systemctl enable nginx.service 开机自启
这就安装好了
6、Nginx的主配置文件 nginx.conf
路径是 /usr/local/nginx/conf/nginx.conf 里面有三大块
- 全局块:全局配置 对全局有效 (多少cpu就填多少 或者aoto 自动)
- events块:配置影响服务器与用户的网络连接(可以改成65535)
- http块:配置代理,日志等绝大多数第三方的配置 其中http块包含
- server块:配置虚拟主机的相关配置
注意:浏览器打开输入网址 根目录直接寻找index 下面的文件 显示第一个 就比如我配置的第一个文件是12.html 就显示这里面的内容
- location块:用于配置匹配的URL链接
注意:http包含多个server块 server块包含多个location块
全局配置:
#user nobody; #运行用户,若编译时未指定则默认为 nobody
worker_processes 1; #工作进程数量,一般设置为和 CPU 核数一样;设置为auto,nginx将会自己获取这个数值
#error_log logs/error.log; #错误日志文件的位置
#pid logs/nginx.pid; #PID 文件的位置
worker_rlimit_nofile 65535; #指定 worker 子进程可以打开的最大文件句柄数,默认为1024
events配置:
events {use epoll; #使用 epoll I/O模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能worker_connections 65535; #每个 worker 子进程能够处理的最大并发连接数multi_accept on; #是否一次性将监听到的连接全接收进来,默认为off,关闭时一次接收一条连接accept_mutex on; #默认为on,开启时表示以串行方式接入新连接,否则将通报给所有worker。这可能会浪费资源并产生不可预计的后果,例如惊群问题
}
#如提高每个进程的连接数还需执行“ulimit -HSn 65535”命令临时修改本地每个进程可以同时打开的最大文件数。
#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
#可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。
#epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
#worker_processes的值和work_connections的值决定了最大并发数量,最大并发数计算方式为:worker_processes*worker_connections。但在反向代理场景中计算方法不同,因为nginx既要维持和客户端的连接,又要维持和后端服务器的连接,因此处理一次连接要占用2个连接,所以最大并发数计算方式为:worker_processes*worker_connections/2。
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" '# '"$http_user_agent" "$http_x_forwarded_for"';##访问日志位置#access_log logs/access.log main;##开启高效的文件传输模式sendfile on;##开启tcp_nopush和tcp_nodelay用于防止网络阻塞tcp_nopush on;tcp_nodelay 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/htmlroot html;##默认首页文件名index index.html index.php;}##内部错误的反馈页面error_page 500 502 503 504 /50x.html;##错误页面配置location = /50x.html {root html;}}
}
二、Nginx访问控制
1、Nginx 有哪些进程?
- master进程:管理worker进程,加载配置文件
- worker进程:处理请求连接
2、nginx 的 root 和 alias 指定路径的区别?
root(根目录)
location /abc {root /var/www;
}
处理方式: root路径+location路径 http://192.168.80.20/abc/xy101/scj.html --> /var/www/abc/xy101/scj.html
注意:
alias(别名目录、虚拟目录)
location /abc {alias /var/www;
}
处理方式: alias路径替换location路径 http://192.168.80.20/abc/xy101/scj.html --> /var/www/xy101/scj.html
三、Nginx虚拟主机
1、基于域名的虚拟主机
server {server_name XXX; #指定不同的域名
}
2、基于IP的虚拟主机
server {listen <IP>:端口; #指定不同的IP
}
3、基于端口的虚拟主机
server {listen IP:<端口>; #指定不同的端口
}