nginx 基本配置与参数说明

2017-03-3018:00:38 23 3,087
摘要

不得不说Nginx真的很强大,学习起来明月感觉有点儿吃力。不知不觉的竟然又喜欢上了纯字符界面的电脑操作环境,有点儿回到过去使用 DOS 学些 Turbo C 的感觉了,就是对 Linux 的指令熟悉程度有限,很多时候都得照着资料输入指令,看来以后学习和掌握 Linux 指令也是一个重要环节了!

最近明月一直在学习 Nginx 的使用,为了方便解决学习当中的“困难”,就收集了一些相关的资料。为了方便我就整理一下发布到博客上来,就当是自己的一个技术文档收集了。

nginx 基本配置与参数说明

今天先来一篇 Nginx 的配置文档 nginx.conf 的参数说明:

  1. #运行用户
  2. user nobody;
  3. #启动进程,通常设置成和 cpu 的数量相等
  4. worker_processes  1;
  5. #全局错误日志及 PID 文件
  6. #error_log  logs/error.log;
  7. #error_log  logs/error.log  notice;
  8. #error_log  logs/error.log  info;
  9. #pid        logs/nginx.pid;
  10. #工作模式及连接数上限
  11. events {
  12.     #epoll 是多路复用 IO(I/O Multiplexing)中的一种方式,
  13.     #仅用于 linux2.6 以上内核,可以大大提高 nginx 的性能
  14.     use   epoll;
  15.     #单个后台 worker process 进程的最大并发链接数    
  16.     worker_connections  1024;
  17.     # 并发总数是 worker_processes 和 worker_connections 的乘积
  18.     # 即 max_clients = worker_processes * worker_connections
  19.     # 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4  为什么
  20.     # 为什么上面反向代理要除以 4,应该说是一个经验值
  21.     # 根据以上条件,正常情况下的 Nginx Server 可以应付的最大连接数为:4 * 8000 = 32000
  22.     # worker_connections 值的设置跟物理内存大小有关
  23.     # 因为并发受 IO 约束,max_clients 的值须小于系统可以打开的最大文件数
  24.     # 而系统可以打开的最大文件数和内存大小成正比,一般 1GB 内存的机器上可以打开的文件数大约是 10 万左右
  25.     # 我们来看看 360M 内存的 VPS 可以打开的文件句柄数是多少:
  26.     # $ cat /proc/sys/fs/file-max
  27.     # 输出 34336
  28.     # 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
  29.     # 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置
  30.     # 使得并发总数小于操作系统可以打开的最大文件数目
  31.     # 其实质也就是根据主机的物理 CPU 和内存进行配置
  32.     # 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
  33.     # ulimit -SHn 65535
  34. }
  35. http {
  36.     #设定 mime 类型,类型由 mime.type 文件定义
  37.     include    mime.types;
  38.     default_type  application/octet-stream;
  39.     #设定日志格式
  40.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  41.                       '$status $body_bytes_sent "$http_referer" '
  42.                       '"$http_user_agent" "$http_x_forwarded_for"';
  43.     access_log  logs/access.log  main;
  44.     #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
  45.     #对于普通应用,必须设为 on,
  46.     #如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,
  47.     #以平衡磁盘与网络 I/O 处理速度,降低系统的 uptime.
  48.     sendfile     on;
  49.     #tcp_nopush     on;
  50.     #连接超时时间
  51.     #keepalive_timeout  0;
  52.     keepalive_timeout  65;
  53.     tcp_nodelay     on;
  54.     #开启 gzip 压缩
  55.     gzip  on;
  56.     gzip_disable "MSIE [1-6].";
  57.     #设定请求缓冲
  58.     client_header_buffer_size    128k;
  59.     large_client_header_buffers  4 128k;
  60.     #设定虚拟主机配置
  61.     server {
  62.         #侦听 80 端口
  63.         listen    80;
  64.         #定义使用 www.nginx.cn 访问
  65.         server_name  www.nginx.cn;
  66.         #定义服务器的默认网站根目录位置
  67.         root html;
  68.         #设定本虚拟主机的访问日志
  69.         access_log  logs/nginx.access.log  main;
  70.         #默认请求
  71.         location / {
  72.             #定义首页索引文件的名称
  73.             index index.php index.html index.htm;
  74.         }
  75.         # 定义错误提示页面
  76.         error_page   500 502 503 504 /50x.html;
  77.         location = /50x.html {
  78.         }
  79.         #静态文件,nginx 自己处理
  80.         location ~ ^/(images|javascript|js|css|flash|media|static)/ {
  81.             #过期 30 天,静态文件不怎么更新,过期可以设大一点,
  82.             #如果频繁更新,则可以设置得小一点。
  83.             expires 30d;
  84.         }
  85.         #PHP 脚本请求全部转发到 FastCGI 处理. 使用 FastCGI 默认配置.
  86.         location ~ .php$ {
  87.             fastcgi_pass 127.0.0.1:9000;
  88.             fastcgi_index index.php;
  89.             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  90.             include fastcgi_params;
  91.         }
  92.         #禁止访问 .htxxx 文件
  93.             location ~ /.ht {
  94.             deny all;
  95.         }
  96.     }
  97. }

声明:本参数说明来源于:www.nginx.cn 的【nginx 基本配置与参数说明』一文。

不得不说 Nginx 真的很强大,学习起来明月感觉有点儿吃力。不知不觉的竟然又喜欢上了纯字符界面的电脑操作环境,有点儿回到过去使用 DOS 学些 Turbo C 的感觉了,就是对 Linux 的指令熟悉程度有限,很多时候都得照着资料输入指令,看来以后学习和掌握 Linux 指令也是一个重要环节了!

历史文章推荐:

  • 本博客公众号
  • 扫一扫关注!
  • weinxin
  • 本博客小程序
  • 微信内浏览本博客
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:23   其中:访客  12   博主  11

    • 面试技巧 面试技巧 0

      已经很不错的,nginx的功能很强大,我的博客和网站都是使用nginx平台,占用内存很小

      • YangOne YangOne 4

        帮顶一个,支持博主