nginx的安装
官方:
Fedora-EPEL:
yum安装
yum install nginx
编译安装:
wegt http://nginx.org/download/nginx-1.12.2.tar.gz
tar xvf nginx-1.12.2.tar.gz
vim nginx-1.12.2/src/core/nginx.h
#define NGINX_VERSION "1.12.2" #修改版本号
#define NGINX_VER "nginxxxx/" NGINX_VERSION #修改显示服务器名字
命令 daemon off; 隐藏版本号 显示nginxxxx
vim nginx-1.12.2/src/http/ngx_http_header_filter_module.c #49行处
static u_char ngx_http_server_string[] = "Server: nginxzzz" CRLF; #修改nginx名字
命令:server_tolens off; #在http中 隐藏版本号 显示nginxzzz
yum install pcre-devel openssl-devel zlib-devel
yum groupinstall "development tools"
useradd -r nginx -s /sbin/nologin
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock--user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio
make && make install
vim /etc/profile.d/nginx.sh
PATH=/usr/local/nginx/sbin/:$PATH
/usr/local/nginx/sbin/nginx #启动
/usr/local/nginx/sbin/nginx -s stop #停止
编译安装nginx的选项:
--prefix=/etc/nginx #安装路径
--sbin-path=/usr/sbin/nginx #指明nginx程序文件安装路径
--conf-path=/etc/nginx/nginx.conf #主配置文件安装位置
--error-log-path=/var/log/nginx/error.log #错误日志文件安装位置
--http-log-path=/var/log/nginx/access.log #访问日志文件安装位置
--pid-path=/var/run/nginx.pid #指明pid文件安装位置
--lock-path=/var/run/nginx.lock #锁文件安装位置
--http-client-body-temp-path=/var/cache/nginx/client_temp #客户端body部分的临时文件存放路径,如果服务器允许客户端使用put方法提交大数据时,临时存放的磁盘路径
--http-proxy-temp-path=/var/cache/nginx/proxy_temp #作为代理服务器,服务器响应报文的临时文件存放路径
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp #作为fastcgi代理服务器,服务器响应报文的临时文件存放路径
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp #作为uwsgi代理服务器,服务器响应报文的临时文件存放路径
--http-scgi-temp-path=/var/cache/nginx/scgi_temp #作为scgi反代服务器,服务器响应报文的临时文件存放路径
--user=nginx #指明以那个身份运行worker进程,主控master进程一般由root运行
--group=nginx
--with-http_ssl_module #表示把指定模块编译进来
nginx编译的目录结构
ls /usr/local/nginx/
/usr/share/nginx/html/index.html
html是测试页,sbin是主程序
ls /usr/local/nginx/sbin/
nginx只有一个程序文件
ls /usr/local/nginx/html/
50x.html index.html 测试网页
rpm -ql nginx 查看yum安装目录结构
nginx命令
Nginx:默认为启动nginx
-h 查看帮助选项
-v 查看版本
-V 查看版本和配置选项
-t 测试nginx语法错误
-T nginx配置文件内容
-q 不显示错误信息
-c filename 指定配置文件(default: /etc/nginx/nginx.conf)
-s signal 发送信号给master进程,signal可为:stop, quit, reopen, reload 示例:-s stop 停止nginx-s reload 加载配置文件
-g directives 在命令行中指明全局指令
nginx配置
配置文件的组成部分:
- 主配置文件:
/etc/nginx/nginx.conf
- 子配置文件:
include /etc/nginx/conf.d/*.conf
- fastcgi,uwsgi,scgi等协议相关的配置文件
- mime.types:支持的mime类型
/etc/nginx/mime.types
主配置文件的配置指令:
directive value [value2 ...];
注意:
- (1) 指令必须以分号结尾
- (2) 大小写敏感
- (3) 支持使用配置变量
- 内建变量:由Nginx模块引入,可直接引用
- 自定义变量:由用户使用set命令定义
set variable_namevalue
; - 引用变量:
$variable_name
主配置文件结构:四部
main block:主配置段,即全局配置段,对http,mail都有效
event {
...
} #事件驱动相关的配置
http {
...
} #http/https 协议相关配置段
mail {
...
} #mail 协议相关配置段
stream {
...
} #stream 服务器相关配置段
Main 全局配置段常见的配置指令分类
正常运行必备的配置
优化性能相关的配置
用于调试及定位问题相关的配置
事件驱动相关的配置
正常运行必备的配置:
帮助文档:http://nginx.org/en/docs/ngx_core_module.html
1、user
Syntax: user user[group];
Default: user nobody nobody;
Context: main
指定worker进程的运行身份,如组不指定,默认和用户名同名
rpm -q --scripts nginx #查看安装脚本
2、pid /PATH/TO/PID_FILE
指定存储nginx主进程PID的文件路径 #/var/run/nginx.pid
3、include file | mask
指明包含进来的其它配置文件片断
4、load_module file
模块加载配置文件:/usr/share/nginx/modules/*.conf
指明要装载的动态模块路径: /usr/lib64/nginx/modules
性能优化相关的配置:
1、worker_processes number | auto
worker进程的数量;通常应该为当前主机的cpu的物理核心数
2、worker_cpu_affinity cpumask ...
worker_cpu_affinity auto [cpumask] 提高缓存命中率
CPU MASK:00000001:0号CPU
00000010:1号CPU
10000000:8号CPU
worker_cpu_affinity 0001 0010 0100 1000;
worker_cpu_affinity 0101 1010;
命令查看:
top 和 htop
watch -n 0.5 'ps axo cmd,pid,psr |grep nginx'
3、worker_priority number
指定worker进程的nice值,设定worker进程优先级:[-20,20]实测:最大19
4、worker_rlimit_nofile number
worker进程所能够打开的文件数量上限,如65535
事件驱动相关的配置:
events {
...
}
1、worker_connections number
每个worker进程所能够打开的最大并发连接数数量,如10240
总最大并发数:worker_processes * worker_connections
2、use method
指明并发连接请求的处理方法,默认自动选择最优方法
use epoll;
3、accept_mutexon | off
互斥处理新的连接请求的方法;on指由各个worker轮流处理新请求,Off指每个新请求的到达都会通知(唤醒)所有的worker进程,但只有一个进程可获得连接,造成“惊群”,影响性能,默认on
调试和定位问题:
1、daemon on|off
是否以守护进程方式运行nignx,默认是守护进程方式 on后台运行 off前台运行
2、master_processon|off
是否以master/worker模型运行nginx;默认为on off将不启动worker
3、error_logfile [level]
错误日志文件及其级别;出于调试需要,可设定为debug;
但debug仅在编译时使用了“--with-debug”选项时才有效
stderr:发送到标准错误
syslog:server-address[,parameter=values]:发送到syslogmemory:size内存
level:debug|info|notice|warn|error|crit|alter|emerg