nginx 主配置文件的书写

本文详细介绍了Nginx主配置文件的设置,包括用户和组的定义、进程参数、错误日志、最大文件描述符限制以及事件模型的选择。特别提到了在Linux系统中使用epoll事件模型以提升性能,并给出了如何配置默认HTTP和HTTPS服务器监听端口的示例。此外,还提供了参考链接以获取更多关于Nginx配置的信息。
摘要由CSDN通过智能技术生成

#定义Nginx运行的用户和组
user www www;

#nginx进程数,官方建议是与cpu总核心数一样,8核心填写8或者填写auto。
worker_processes auto;

#全局错误日志定义类型[ debug | info | notice | warn | error | crit ]
error_log /home/wwwlogs/nginx_error.log info;

#进程的pid文件存放位置
pid /usr/local/nginx/logs/nginx.pid;

#指定进程可以打开的最大描述符:数目
#工作模式与连接数上限
#这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
#现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。
#这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。
worker_rlimit_nofile 65535;

events
{
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型
#是Linux 2.6以上版本内核中的高性能网络I/O模型,linux建议epoll,如果跑在FreeBSD上面,就用kqueue模型。
#补充说明:
#与apache相类,nginx针对不同的操作系统,有不同的事件模型
#A)标准事件模型
#Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll
#B)高效事件模型
#Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。
#Epoll:使用于Linux内核2.6版本及以后的系统。
#/dev/poll:使用于Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
#Eventport:使用于Solaris 10。 为了防止出现内核崩溃的问题, 有必要安装安全补丁。
use epoll; #linxu填写epoll就完事了

	#单个进程最大连接数(最大连接数=连接数*进程数)
	#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。
    worker_connections 65535;
	
	#告诉nginx收到一个新连接通知后面接受尽可能多的连接
    multi_accept on;
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http
{ #文件扩展名与文件类型映射表
include mime.types;

	#默认文件类型
    default_type  application/octet-stream;
	
	#默认编码
	charset utf-8;
	
	#服务器名字的hash表大小
	#保存服务器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。
    server_names_hash_bucket_size 128;
	
	#客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
    client_header_buffer_size 32k;
	
	#客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取。
    large_client_header_buffers 4 64k;
	
	#设定通过nginx上传文件的大小
    client_max_body_size 8m;
	
	#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
	#sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
    sendfile   on;
	
	#此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用
    tcp_nopush on;
	tcp_nodelay on;
	
	#长连接超时时间,单位是秒
    keepalive_timeout 60;

    #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;
	
	#gzip模块设置
    gzip on;				#开启gzip压缩输出
    gzip_min_length  1k;	#最小压缩文件大小
    gzip_buffers     4 16k;	#压缩缓冲区
    gzip_http_version 1.1;	#压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
    gzip_comp_level 2;		#压缩等级
	
	#压缩类型,默认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
    gzip_vary on;	
    gzip_proxied   expired no-cache no-store private auth;
    gzip_disable   "MSIE [1-6]\.";

	
    server_tokens off;
    access_log off;

    log_format test '$http_x_forwarded_for,$remote_addr - http_x_real_ip';

    log_format main '$http_x_forwarded_for,$remote_addr - $remote_user [$time_local] "$request_method $scheme://$host:$server_port$request_uri $server_protocol" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent"';

    log_format bug '[$time_local] "$scheme://$host$request_uri" "$http_user_agent"';

#开启所有nginx子配置文件都可以使用80默认端口
server {
listen 80 default_server;
server_name _;
return 444;
}

#开启所有自配置文件都默认使用ssl 443端口
server {
listen 443 default_server;
ssl on;
server_name _;
ssl_certificate ssl/fun.crt; #证书可以随意
ssl_certificate_key ssl/fun.key; #必须是一对
return 444;
}

	include vhost/*.conf;	#这里的意思很明显是哪些位置的nginx配置文件允许使用有效
	include vhost/*/*.conf;
	include vhost/*/*/*.conf;
	include vhost/*/*/*/*.conf;

}

#######################
可以参这:https://blog.csdn.net/u013703963/article/details/55048872

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值