欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > Nginx配置文件详解

Nginx配置文件详解

2024/11/7 12:22:19 来源:https://blog.csdn.net/BabyOi/article/details/141399671  浏览:    关键词:Nginx配置文件详解

默认nginx.conf配置文件

#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}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        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##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;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##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.conf配置文件可以分为以下结构:

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、evens块:配置影响nginx服务器或用户的网络连接。常用设置包括 是否开启对多worker process下的网络序列化等,x每个worker process进程的最大连接数,是否允许同时接受多个网络连接,选取哪种事件驱动模型处理连接请求。

每个work process的最大连接数为1024

3、http块:可以嵌套多个server,配置代理、缓存、日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

3.1、http全局块:http全局块配置的指令包括文件引入、mime-type定义、日志自定义、连接超时时间、单连接请求数等。

3.2、server块:http块可以包括多个server块,而每个server块就相当于一个虚拟主机

4、server块:配置虚拟主机的相关参数,包括端口、主机名称、ip,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况,每个server都可以配置多个location块。


...              #全局块events {         #events块...
}http      #http块
{...   #http全局块server        #server块{...       #server全局块location [PATTERN]   #location块{...}location [PATTERN] {...}}server{...}...     #http全局块
}

配置文件详解:

#运行用户
user nobody;#启动进程,通常设置成和cpu的数量相等
worker_processes 6;#全局错误日志定义类型,日志级别【debug、info、notice、warn、error、crit(默认)、】
error_log log/error.log;
error_log log/error.log notice;
error_log log/error.log info;#进程pid文件
pid /var/run/nginx.pid;#工作模式及连接数上限
events {#设置网络连接序列化,防止惊群现象发生,默认为onaccept_mutex on;#仅用于linux2.6以上内核,可以大大提高nginx的性能#事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventportuse epoll;#单个后台worker proesses进程的最大并大链接数worker_connections 1024;#客户端请求头部的缓冲区大小client_header_buffer_size 4k;#keepalive超时时间keepalive_timeout 60;#设置一个进程是否同时接受多个网络连接,默认为off#multi_accept off;}#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {#文件扩展名与文件类型映射表义include /etc/nginx/mime.types;#默认文件类型default_type application/octet-stream;#默认编码charset utf-8;#服务器名字的hash表大小server_names_hash_bucket_size 128;#客户端请求头部的缓冲区大小client_header_buffer_size 32k;#客户请求头缓冲大小large_client_header_buffers 4 64k;#设定通过nginx上传文件的大小client_max_body_size 8m;#开启目录列表访问,适合下载服务器,默认关闭autoindex off;#sendfile 指令指定nginx是否调用sendfile函数来输出文件,对于普通应用,必须设为on#如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度sendfile on;#每个进程每次调用数量不能大于设定的值,默认为0,代表没有上限sendfile_max_chunk 1000k;#连接超时时间,默认为75秒,可以在http,server,location块keepalive_timeout 65;#此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在sendfile的时候使用#tcp_nopuch on;#连接超时时间(单位:秒)keepalive_timeout 65;#gizp模块设置gzip on;    #开启gzip压缩输出gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_varp on;#开启限制IP连接数的时候需要使用#limit_zone crawler $binary_remote_addr 10m;#负载均衡配置#通过weight可以配置轮询和权重策略,ip_hash是ip的hash策略upstream myserver {#例:(weight是权重的策略)#server 127.0.0.1:8080 weight=1;server ip:端口 }#错误页,这里可以统一定义,也可在server中分别定义error_page 404 http://xxxxxxxx;# http 虚拟主机的配置server {#单连接请求上限次数keepalive_requests 120;#监听端口listen 80;#域名或ip可以有多个,用空格隔开server_name 127.0.0.1;#默认入口文件名称index index.html index.htm index.php;#网站根目录#root /data/www/jd;#图片缓存时间设置location ~ .*.(gif|jpg|jpeg|png|bmp|swf) ${expires 10d;}#JS和CSS缓存时间设置location ~ .*.(js|css)?${expires 1h;}#日志配置---start---  可以放在http块中统一定义,也可在server块中单独定义#关闭日志服务#access_log off;#日志格式定义#$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;#$remote_user:用来记录客户端用户名称;#$time_local:用来记录访问时间和时区;#$request:用来记录请求的url与http协议;#$status:用来记录请求状态,成功是200;#$body_bytes_sent:记录发送给客户端文件主体内容大小;#$http_referer:用来记录从哪个页面链接访问过来的;#$http_user_agent:记录客户端浏览器的相关信息;#自定义日志格式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 /usr/local/nginx/logs/xxxxxx.access.log main;#日志配置---end---#对路由地址进行反向代理location /xxxxxx {#代理转发proxy_pass http://127.0.0.1:80;#修改代理服务器返回的响应头的location头域和refresh头域值,off禁止所有proxy_redirect指令proxy_redirect off;#只要用户在浏览器中绑定了VIP,VIP下面有RS;则就用$host;host是访问URL中的域名和端口proxy_set_header Host $host;#把源IP【$remote_addr,建立HTTP连接header里面的信息】赋值给X-Real-IP;这样在代码中$X-Real-IP来获取源IPproxy_set_header X-Real-IP $remote-addr;#在nginx作为代理服务器时,设置的IP列表,会把经过的机器ip,代理服务器ip都记录下来,用逗号隔开;代码中用echo $x-forwarded-for |awk -F, '{print $1}' 来作为源IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#允许客户端请求的最大单文件字节数client_max_body_size 10m;#缓冲区代理缓冲用户端请求的最大字节数client_body_buffer_size 128k;#表示使nginx阻止HTTP应答代码为400或者更高的应答proxy_intercept_errors on;#nginx跟后端服务器连接超时时间(代理连接超时)proxy_send_timeout 90;#后端服务器数据回传时间,就是在规定时间之内后端服务器必须传完所有的数据proxy_send_timeout 90;#连接成功后,后端服务器响应的超时时间proxy_read_timeout 90;#设置代理服务器保存用户头信息的缓存区大小proxy_buffer_size 4k;#设置用于读取应答的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同,可能是4k或者8kproxy_buffers 4 32k;#高负荷下缓冲大小(proxy_buffers * 2)proxy_busy_buffers_size 64k;#设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长#设定缓存文件大小,大于这个值,将从upstream服务传proxy_temp_file_write_size 64k;}                        }        
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com