#全局配置,主要设置nginx的启动用户/组,启动的工作进程数量,工作模式,Nginx的PID路径,日志路径等
#启动Nginx工作进程的用户和组。
user nginx nginx;
#启动工作进程数数量
worker_processes [number|auto];
#将Nginx工作进程绑定到指定的CPU核心,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。
worker_cpu_affinity 00000001 00000010 00000100 00001000; #验证:ps axo pid,cmd,psr | grep nginx
#错误日志记录配置,语法:error_log file [debug | info | notice | warn | error | crit | alert | emerg]
error_log /apps/nginx/logs/error.log error;
#pid文件保存路径
pid /apps/nginx/logs/nginx.pid;
#工作进程优先级,-20~19
worker_priority 0; #验证进程优先级:watch -n1 'ps -axo pid,cmd,nice | grep nginx
#与Nginx连接服务器数量,包含客户端,代理服务器等,实际的并发连接数不能超过系统级别的最大打开文件数
worker_rlimit_nofile 65536;
#前台运行Nginx服务用于测试、docker等环境。
daemon off;
#是否开启Nginx的master-woker工作模式。
master_process off|on;
#隐藏Nginx server版本
server_tokens off;
#导入其他路径的配置文件
include /apps/nginx/conf.d/*.conf
#events块,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连接,使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最大连接数,是否开启对多工作进程下的网络连接进行序列化等。
events {
#设置单个nginx工作进程可以接受的最大并发,作为web服务器的时候最大并发数为worker_connections * worker_processes,作为反向代理的时候为 (worker_connections * worker_processes)/2
worker_connections 65536;
#使用epoll事件驱动,只能在events模块中设置。
use epoll;
#防止惊群。优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置,on为防止被同时唤醒,默认为off,全部唤醒的过程也成为"惊群",因此nginx刚安装完以后要进行适当的优化。
accept_mutex on;
#使Nginx服务器的每个工作进程可以同时接受多个新的网络连接,此指令默认为关闭,即默认为一个工作进程只能一次接受一个新的网络连接
multi_accept on;
}
#http块是Nginx服务器配置中的重要部分,缓存、代理和日志格式定义等绝大多数功能和第三方模块 都可以在这设置,http块可以包含多个server块,而一个server块中又可以包含多个location块,server 块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时时间和单个链接的请求上限等。
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系统调用来传输文件,sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝,硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈。
sendfile on; #作为web服务器的时候打开sendfile加快文件传输
#在开启了sendfile的情况下,合并请求后统一发送给客户端。
#tcp_nopush on;
#在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off 时,延迟发送,合并多个请求后再发送,默认On时,不延迟发送,立即发送用户相应报文。
#tcp_nodelay off;
#在一次长连接上所允许请求的资源的最大数量,默认为100
keepalive_requests 3;
#设置会话保持时间,长连接超时时间,单位是秒。
keepalive_timeout 65 60; #后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。
#对哪种浏览器禁用长连接
#keepalive_disable none | browser ...;
#向客户端发送响应报文的超时时长,此处是指两次写操作之间的间隔时长,而非整个响应过程的传输时长。
#send_timeout TIME;
#开启文件压缩
#gzip on;
#server设置一个虚拟机主机,可以包含自己的全局块,同时也可以包含多个locating模块。比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server 可以使用一个端口,比如都使用80端口提供web服务
server {
#配置server监听的端口
listen 80;
#设置server name,可以以空格隔开写多个并支持正则表达式
server_name localhost;
#自定义错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#自定义访问日志
access_log /data/nginx/logs/www-magedu-net_access.log;
#自定义错误日志
error_log /data/nginx/logs/www-magedu-net_error.log;
#监测文件是否存在,不存在的uri会显示default,如果是自定义的状态码则会显示在返回数据的状态码中
try_files $uri $uri/index.html $uri.html =489;#489就是自定义的状态返回码
#设置编码格式,默认是俄语格式,可以改为utf-8
#charset koi8-r;
#access_log logs/host.access.log main;
#location其实是server的一个指令,为nginx服务器提供比较多而且灵活的指令,主要是基于nginx接收到的请求字符串,对用户请求的UIL进行匹配,并对特定的指令进行处理,包括地址重定向、数据缓存和应答控制等功能都是在这部分实现,另外很多第三方模块的配置也是在location模块中配置。
location / {
#默认页面的目录名,默认是相对路径
root html;
#默认页面的文件名
index index.html index.htm;
#对客户端源IP地址进行访问限制,访问控制基于模块ngx_http_access_module实现
deny 192.168.1.1;
allow 192.168.1.0/24;
}
#以http的方式转发php请求到指定web服务器
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
#以fastcgi的方式转发php请求到php处理
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
#拒绝web形式访问指定文件,如很多的网站都是通过.htaccess文件来改 变自己的重定向等功能。
location ~ /passwd.html {
deny all;
}
#favicon.ico图标
#一:服务器不记录访问日志:
#location = /favicon.ico {
# log_not_found off;
# access_log off;
#}
#二:将图标保存到指定目录访问:
#location ~ ^/favicon\.ico$ {
location = /favicon.ico {
root /data/nginx/html/pc/images;
}
#自定义虚拟server
#server {
# listen 8000;
# listen somename:8080;
# location / {
# root html;
# 指定默认网页文件,此指令由 ngx_http_index_module模块提供
# index index.html index.htm;
# }
#}
#https服务器配置
#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;
# }
#}
#和邮件相关的配置
#mail {
# ...
# } mail 协议相关配置段
#tcp代理配置,1.9版本以上支持
#stream {
# ...
# } stream 服务器相关配置段
}
#高级配置
#状态页:用于输出nginx的基本状态信息
#基于nginx模块ngx_http_auth_basic_module实现,在编译安装nginx的时候需要添加编译参数--with- http_stub_status_module
location /nginx_status {
stub_status;
}
常见优化:
worker_connections 65536;
use epoll;
accept_mutex on;
multi_accept on;
Nginx常用配置中文注释
最新推荐文章于 2024-06-05 09:12:10 发布