nginx程序环境
配置文件的组成部分:
主配置文件:nginx.conf
include conf.d/*.conf
fastcgi, uwsgi,scgi等协议相关的配置文件
mime.types:支持的mime类型
主程序文件:/usr/sbin/nginx
Unit File:nginx.service
注意:
(1) 指令必须以分号结尾;
(2) 支持使用配置变量;
内建变量:由Nginx模块引入,可直接引用;
自定义变量:由用户使用set命令定义;
set variable_name value;
引用变量:$variable_name
image.png
#nginx的配置文件
user nginx;
worker_processes auto; #自动生成worker子进程,一般根据cpu的核数生成
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024; #单个worker子进程保持连接数
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
##变量的含义可以在nginx网站上查看http://nginx.org/en/docs/
access_log /var/log/nginx/access.log main;
sendfile on; #直接在内核封装响应报文,不需要在应用层封装,提升性能
tcp_nopush on; #同上
tcp_nodelay on; #同上
keepalive_timeout 65; #保持连接超时
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream; #默认识别成八进制数据流
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server; #后缀说明是默认虚拟主机,当所有server不匹配时,匹配这个
listen [::]:80 default_server;
server_name _; #下划线可以匹配所有地址名
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
但是一般不推荐直接在主配置文件中配置,在/etc/nginx/conf.d/中创建一个.conf文件的即可,来测试一下
[root@lvq-7-4-2 ~]# cat /etc/nginx/conf.d/test.conf
server {
listen 80;
server_name node2.lvqing.com;
root /data/nginx/vhost1;
}
[root@lvq7-4-1 keepalived]# curl http://node2.lvqing.com
<h1>Nginx Vhost 2</h1>
nginx最难的就是其配置的指令,必须要熟练的知道nginx指令所代表的意义
main配置段常见的配置指令:
分类:
正常运行必备的配置
优化性能相关的配置
用于调试及定位问题相关的配置
事件驱动相关的配置
正常运行必备的配置:
1、user
Syntax: user user [group];
Default: user nobody nobody;
Context: main
2、pid /PATH/TO/PID_FILE;
指定存储nginx主进程进程号码的文件路径;
3、include file | mask;
指明包含进来的其它配置文件片断;
4、load_module file;
指明要装载的动态模块;1.10以后才支持
性能优化相关的配置:
1、worker_processes number | auto;
worker进程的数量;通常应该等于小于当前主机的cpu的物理核心数;
auto:当前主机物理CPU核心数;
2、worker_cpu_affinity cpumask ...;
worker_cpu_affinity auto [cpumask];
CPU MASK:几个cpu用几个0表示
00000000:
00000001:0号CPU
00000010:1号CPU
3、worker_priority number;
指定worker进程的nice值,设定worker进程优先级;[-20,20]
4、worker_rlimit_nofile number;
worker进程所能够打开的文件数量上限;
调试、定位问题:
1、daemon on|off;
是否以守护进程方式运行Nignx;
2、master_process on|off;
是否以master/worker模型运行nginx;默认为on;
使用master来处理请求,可查看其状态
3、error_log file [level];
默认级别为warrning,不使用rsyslog来记录日志
事件驱动相关的配置:
events {
...
}
1、worker_connections number; #关键配置,调优需要
每个worker进程所能够打开的最大并发连接数数量;
worker_processes * worker_connections
2、use method;
指明并发连接请求的处理方法;
use epoll;
3、accept_mutex on | off;
处理新的连接请求的方法;on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程;
配置nginx通过ssl进行链接
1、首先我们在CA服务器node2上生成私钥
image.png
2、然后生成自签证书
image.png
注意是echo 01 > serial
image.png
3、然后在node1生成私钥,注意组织名要一致,不然可能不签发
image.png4、文件通过scp传给node2,然后签发证书
image.png
5、证书已经有了
image.png
6、编辑配置文件
server{
listen 443 ssl;
server_name node1.lvqing.com;
root /var/nginx/www/;
access_log /var/log/nginx/ngx_ssl_access.log main;
ssl on;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols sslv3 tlsv1 tlsv1.1 tlsv1.2;
ssl_session_cache shared:SSL:10m; #打开会话缓存
location ~* \.php$ {
proxy_cache pxycache;
proxy_cache_key $proxy_host$request_uri;
proxy_pass http://node2.lvqing.com;
}
}
可以看到nginx基于ssl模块的功能已经配置好了
image.png
网友评论