⭐本栏专为小白准备,属科普、基础、简单操作
🌞七斤是个新手博主,如发现错误还请各位指教,及时更正 |
Nginx 概述
Nginx 是一个网站架设软件,与 Apache 一样可以完成网站架设。由俄罗斯程序设计师 Igor Sysoev 开发。目前新浪、网易、腾讯、Plurk 等都在使用。
Nginx,发音为[engine x],专为性能优化而开发,其最知名的优点是它的稳定性和低系 统资源消耗,以及对 HTTP 并发连接的高处理能力,单台物理服务器可支持 30000~50000 个 并发请求。
正因如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择 Nginx 来提供 Web 服务。
详见 Nginx 官方网站:http://nginx.org
Nginx 优点
轻量级,同样架设 Web 服务,比 Apache 占用更少的内存及资源
高并发,Nginx 处理请求是异步非阻塞的,而 Apache 则是阻塞性的,在高并发下 Nginx 能保存低资源消耗高性能
高度模块化的设计,编写模块相对简单
可作为负载均衡服务器,支持 7 层负载均衡
静态处理性能比 Apache 高 3 倍以上,但动态处理不足,需要通过后端服务器支持,如 Apache
Nginx 的安装与控制
源码包安装 Nginx
#安装依赖包
[root@nginx-server ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#创建运行用户、组
[root@nginx-server ~]# useradd -M -s /sbin/nologin nginx
#下载nginx源码包
[root@nginx-server ~]# wget http://nginx.org/download/nginx-1.12.0.tar.gz
#解压
[root@nginx-server ~]# tar -xvf nginx-1.12.0.tar.gz -C /usr/src/
#进入源码目录
[root@nginx-server ~]# cd /usr/src/nginx-1.12.0/
#预编译以及安装
[root@nginx-server nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
--with-http_stub_status_module:加载日志统计模块
#为主程序 nginx 创建链接文件
[root@nginx-server ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
或
echo "export PATH=$PATH:/usr/local/nginx/sbin/" >>/etc/profile
source /etc/profile
Nginx 的运行控制方法
手动方法控制 Nginx:
nginx -t 检测配置文件语法
执行 nginx 主程序启动 Nginx
[root@nginx-server ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#启动服务
[root@nginx-server ~]# nginx
[root@nginx-server ~]# netstat -utpnl |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18174/nginx: master
#安装killall命令,killall命令用于管理nginx
[root@nginx-server ~]# yum -y install psmisc
#重启nginx
[root@nginx-server ~]# killall -s HUP nginx
[root@nginx-server ~]# nginx -s reload
#正常停止nginx
[root@nginx-server ~]# killall -s QUIT nginx
[root@nginx-server ~]# nginx -s stop
#nginx日志切换,也就是重新打开一个日志文件
[root@nginx-server ~]# killall -s USR1 nginx
配置Nginx虚拟主机
虚拟主机网站根目录
1)创建网站根目录
[root@nginx-server ~]# mkdir -p /www/xiaocom
[root@nginx-server ~]# mkdir -p /www/com
2)设置网站主页
[root@nginx-server ~]# echo "www.xiao.com" > /www/xiaocom/index.html
[root@nginx-server ~]# echo "www.cheng.com" > /www/chengcom/index.html
修改Nginx主配置文件支持虚拟主机配置
修改Nginx主配置文件
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.xiao.com; //第一个虚拟主机
harset utf-8; //字符编码
access_log logs/www.xiao.com.access.log; //日志
location / {
root /www/xiaocom/; //网站根目录
index index.html index.htm; //网站主页
}
}
server {
listen 80;
server_name www.cheng.com;
charset utf-8;
access_log logs/www.cheng.com.access.log;
location / {
root /www/chengcom/;
index index.html index.htm;
}
}
}
检查主配置文件是否错误
nginx -t
重启Nginx服务
killall nginx
nginx
扩展:调取nginx
的进程号
ps -ef |grep nginx |awk 'NR==1 {print $2}' //取nginx的主进程号
ps -ef |grep nginx |awk 'NR==2 {print $2}' //取nginx的工作进程号
Nginx 配置文件分析
全局配置
由各种配置语句组成,不使用特定的界定标准,设置 Nginx 服务的运行用户、工作进程数、错误日志、PID 存放位置等。
/usr/local/nginx/conf/nginx.conf

扩展:查看cpu核数

I/O 事件配置
用“events{ }”界定,指定 Nginx 进程的 I/O 响应模式、每个进程的连接数等。2.6 及以上版本的内核,建议使用 epoll 模型以提高性能;每个进程的连接数应根据实际需求来定, 一般在 10000 以下,默认 1024。
12 events {
13 use epoll; //手动添加
14 worker_connections 10240;
15 }
use epoll;:用来设定nginx的工作模式。nginx的工作模式有select、poll、kqueue、epoll、 rtsig和/dev/poll 其中select、poll是标准工作模式,kqueue、epoll是高效工作模式。不同是: epoll 用于 linux 内核,kqueue 用于 BSD 系统。对于 epoll 是 linux 的首选参数.
worker_connections 10240;:用于定义 nginx 每个进程的最大连接数,默认是 1024
最大的 客户端连接数:worker_processe(2)×worker_connection( 10240)= max_client(20480)。
进程的最大连接数受进程的最大打开文件数量限制。需执行 ulimit -n 65536
HTTP 配置及虚拟主机设置
用“http{ }”界定,设置访问日志、HTTP 端口、网页目录、默认字符集、连接保持、虚 拟 Web 主机、PHP 解析等,server{ }配置段设置特定的网址。


HTTP 配置项说明
· access_log 指定访问日志位置
· sendfile 是否支持文件发送(下载)
· keepalive_timeout 连接保持超时
· listen 80 监听地址及端口
· server_name 设置网址名称(FQDN)
· location 根目录配置
· root 网站根目录的位置
· index 默认首页(索引页)
· error_page 内部错误的反馈页面