nginx配置文件分为三段:
1.全局(main)配置段
2.event配置段
3.http配置段---包含server配置 main配置段
user nobody nobody; ##设置用户及用户组 worker_processes 2/auto;nginx开启的进程数,根据CPU核数确定,或者auto自动选择
#worker_cpu_affinity 0001 0010 0100 1000;指定cpu运行nginx
error_log 路径 错误日志类型[debug|info|notice|warn|error|crit];
pid 路径;指定pid文件路径
worker_rlimit_nofile 65535;一个nginx进程打开的最大文件描述符数目 events配置段
events
{
use [epoll|kqueue]参考事件模型 linux|FreeBSD,二者都是高效事件模型
worker_connections 65535;单个进程最大连接数
keepalive_timeout 60;超时时间
} http配置段
{ ①.... upstream{ } server{ ②...... location{ } location{ } }
} ①配置
include mime.typs;文件扩展名与文件类型映射表
default_type application/octet-stream;默认文件类型
log_format ...设定日志格式
access_log 设置访问日志文件路径
client_max_body_size 500m;设定上传文件大小
sendfile on 指定nginx是否调用sendfile函数来输出文件。
proxy_connect_timeout 90;后端服务器连接超时时间
proxy_read_time 180;连接成功后,等待后端服务器处理请求的时间
proxy_send_timeout 180;规定时间内,后端服务器必须传完所有数据
proxy_buffer_size 256K 设置从被代理服务器读取的第一部分应答的缓冲区的大小
proxy_buffers 4 256 设置缓冲区数目和大小
keepalive_timeout 120 keepalive超时时间
tcp_nodely on 能有效的提高数据的实时响应性 防止网络阻塞
tcp_nopush on 允许或禁止使用socket的tcp_cork,仅在使用sendfile时使用,防止网络阻塞 FastCGI相关配置
fastcgi_connect_timeout 300
fastcgi_send_timeout fastcgi_read_timeout
fastcgi_buffer_size
fastcgi_buffers 4 256k
fastcgi_busy_buffer_size
fastcgi_temp_file_write_size gzip模块设置
gzip on 开启压缩输出
gzip_min_length 最小压缩文件大小
gzip_buffers 4 16
gzip_http_version 1.1
gzip_comp_level 2
gzip_typs text/plain application/x-javascript text/css application/xml;#前端缓存服务器缓存经过压缩的页面
gzip_vary on upstream模块 例:加权轮询
upstream 目标地址{
server 192.168.1.1 weight=2 max_fails=1 fail_timeout=60s;
server 192.168.1.2 down;不启用
server 192.168.1.3 backup;其他机器忙的时候,请求此主机
}
负载均衡几种方式
1.轮询
2.加权轮询
3.ip_hash,可保证session一致性
upstream 目标地址{
ip_hash;
server 192.168.1.1;
server 192.168.1.2;
}
4.fair(第三方),按响应时间分配请求,响应时间短的优先分配,或者可以说空闲机器优先分配。
upstream 目标地址{
server 192.168.1.1;
server 192.168.1.2;
fair;
}
5.url_hash(第三方)按照访问url的hash结果分配,使每个url定向到同一个后端服务器
upstream 目标地址{
ip_hash;
server 192.168.1.1;
server 192.168.1.2;
hash $request_uri;
hash_method crc32;
} ②server,虚拟主机配置
server {
listen 80;监听端口
server_name 192.168.1.151/wmy.com/localhost;访问域名、主机
access_log logs/host.access.log main;虚拟主机访问日志定义 location / { 对url进行匹配
root html/xxxxxxx; 访问的根路径
index xxxx.html insex.htm 提供访问内容的文件 } location ~*\.(mp3|exe)${ 将以MP3。exe结尾的请求转发至。。。
proxy_pass http://img_relay$request_uri;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;记录代理服务器记录的真实ip
}
###rewrite重写机制,实现域名跳转
location / {
if ($http_user_agent ~* "xnp") {
rewrite ^(.*) http://i1.***.com/help/noming.gif}
} ###错误信息返回页面
#error_page 400 /404.html
error_page 500 502 503 /50x.html
location = /50x.html {
root html;
} ###禁止或允许用户访问
location ~ /\.ht {
deny all;禁止访问
allow all;允许所有人访问
}
禁止指定用户
location ~ /\.ht { 从上到下生效,只允许192.168.1.123访问
allow 192.168.1.123;
deny all;
}
} https虚拟主机(需在编译时编译ssl模块)
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / { root html; index index.html index.htm;
} nginx状态监控---stubstatus模块,需在安装时编译
location /hxbcdnstatus { stub_status on; access_log off; allow 127.0.0.1; deny all; deny all; #auth_basic 'NginxStatus'; #auth_basic_user_file conf/nginxstaus; }