首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Nginx惯用配置

2013-10-31 
Nginx常用配置数据为王Data is the new oil.?首页关于FrankWong?首页Nginx 常用配置2013年5月23日frankwon

Nginx常用配置

数据为王Data is the new oil.?
  • 首页
  • 关于FrankWong
  • ?首页

    Nginx 常用配置2013年5月23日frankwong发表评论阅读评论?

    不多说废话,直接上nginx.conf简洁版

    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778#使用哪个用户启动nginx user? frankwong; ?#nginx 工作进程数,一般设置成CPU核数worker_processes? 4;?# [ debug | info | notice | warn | error | crit ]?? 错误日志的位置#error_log? logs/error.log;#error_log? logs/error.log? notice;#error_log? logs/error.log? info;?#nginx进程号保存文件#pid??????? logs/nginx.pid;?events {????#use [ kqueue | rtsig | epoll | /dev/poll | select | poll ] 使用epoll(linux2.6的高性能方式)????use epoll;?????#每个worker最大连接数,受限于进程最大打开文件数目,参考ulimit -n????worker_connections? 1024;}?http {?????#文件扩展名与文件类型映射表????include?????? mime.types;?????#默认文件类型 bin exe dll????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;?????#上传文件大小限制????client_max_body_size 20m????#设定请求缓冲?? ????client_header_buffer_size 1k;?? ????large_client_header_buffers 4 4k; ?????server {????????#监听端口号????????listen?????? 80;????????#配置基于名称的虚拟主机,通过它可以进行多域名转发????????server_name? localhost;?????????#默认编码????????charset utf-8;?????????#设定本虚拟主机的访问日志????????#access_log? logs/host.access.log? main;?????????location / {????????????root?? html;????????????index? index.html index.htm;????????}????????#错误页面????????error_page? 404????????????? /404.html;?????????error_page?? 500 502 503 504? /50x.html;????????location = /50x.html {????????????root?? html;????????}? ????}}

    1.开启gzip压缩

    找到#gzip on这行,修改成如下内容即可

    123456789gzip??????????? on;gzip_min_length 1k;//只压缩大于1K的文件gzip_buffers 4 16k;#gzip_http_version 1.0;//默认1.1gzip_comp_level 2;//压缩级别,1-10,数字越大压缩的越好,时间也越长gzip_min_length???? 1000;gzip_types????? text/plain text/css application/x-javascript;gzip_vary off;//Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"gzip_disable "MSIE [1-6]."; //取消对IE6的支持

    2.设置Nginx 监控

    123456location ~ ^/NginxStatus {???????????stub_status on;//开启状态查看???????????access_log off;//关闭日志???????????allow?? 127.0.0.1;//设置仅能本机查看???????????deny??? all;}

    生效之后输入http://127.0.0.1/NginxStatus 即可看到相关状态信息

    1234Active connections: 328??server accepts handled requests?? 9309 8982 28890??Reading: 1 Writing: 3 Waiting: 324

    3.设置静态资源的缓存

    12345location ~ .(htm|html|gif|jpg|jpeg|png|ico|rar|css|js|zip|txt|flv|swf|doc|ppt|xls|pdf)$ {???????????root? /opt/webapp/cache;//静态资源路径???????????access_log off;???????????expires 24h;//cache有效时间 这边设置成1}

    4.设置图片防盗链

    1234567location ~ .*.(gif|jpg|jpeg|png|bmp|swf)${???????expires????? 30d;???????valid_referers none blocked dropbag.sinaapp.com*;???????if ($invalid_referer) {???????rewrite ^/ http://gitsea.com/404.html;#return 404;???????}}

    5.平滑变更nginx配置
    输入

    1/usr/local/nginx/sbin/nginx -t

    如果结果显示

    12the configuration file /usr/local/nginx/conf/nginx.conf syntax is okthe configuration file /usr/local/nginx/conf/nginx.conf was tested successfully

    表示没有问题,则可以进行平滑重启,输入如下指令
    nginx -s reload
    其他常用指令如
    nginx -s stop 停止nginx服务

    6.日志切割
    nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,所以需要写一个nginx日志切割脚本来自动切割日志文件。

    第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。
    第二步向nginx主进程发送USR1信号。
    nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。
    脚本文件nginx_log.sh如下

    123456789101112#nginx日志切割脚本#!/bin/bash#设置日志文件存放目录logs_path="/usr/local/nginx/logs/"#设置pid文件pid_path="/usr/local/nginx/nginx.pid"?#重命名日志文件mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log?#向nginx主进程发信号重新打开日志kill -USR1 `cat ${pid_path}`

    crontab 设置作业
    0 0 * * * bash /usr/local/nginx/nginx_log.sh
    这样就每天的0点0分把nginx日志重命名为日期格式,并重新生成今天的新日志文件。

    7.反向代理和负载均衡
    负责均衡需功能需要在编译nginx的时候把ngx_http_upstream_module模块编译进去
    假设有3台tomcat服务器ip分别为192.168.1.101,192.168.1.102,192.168.0.103,我们需要用nginx对这3台tomcat服务器做负载均衡,使得在高访问量的情况下能够对req做分发。
    配置如下

    1234567891011121314151617181920212223upstream tomcatserver{?? #weigth参数表示权值,权值越高被分配到的几率越大??? server 192.168.1.101:8080? weight=5;?? server 192.168.1.102:8080? weight=1;?? server 192.168.1.103:8080? weight=6;?? }#对 "/" 启用负载均衡?? location / {?? proxy_pass http://tomcatserver;?? proxy_redirect????????? off;proxy_set_header??????? Host $host;proxy_set_header??????? X-Real-IP $remote_addr;//通过X-Forwarded-For获取用户真实IPproxy_set_header??????? X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size??? 10m;//允许客户端请求的最大单文件字节数client_body_buffer_size 128k;//缓冲区代理缓冲用户端请求的最大字节数proxy_connect_timeout?? 300;//nginx跟后端服务器连接超时时间(代理连接超时)proxy_send_timeout????? 300;//后端服务器数据回传时间(代理发送超时)proxy_read_timeout????? 300;//连接成功后,后端服务器响应时间(代理接收超时)proxy_buffer_size?????? 4k;//设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers?????????? 4 32k;proxy_busy_buffers_size 64k;//高负荷下缓冲大小proxy_temp_file_write_size 64k;//设定缓存文件夹大小,大于这个值,将从upstream服务器传}

    常用命令

    -c </path/to/config>?为 Nginx 指定一个配置文件,来代替缺省的。

    -t?不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。

    -v?显示 nginx 的版本。

    -V?显示 nginx 的版本,编译器版本和配置参数。

    问题
    关于nginx并发数的计算,参加Nginx Wiki

    12345678worker_connections Syntax: worker_connections number Default: The worker_connections and worker_proceses from the main section allows you to calculate maxclients value: max_clients = worker_processes * worker_connections In a reverse proxy situation, max_clients becomes max_clients = worker_processes * worker_connections/4Since a browser opens 2 connections by default to a server ,and nginx uses the fds (file descriptors) from the same pool to connect to the upstream backend .

    翻译
    做http服务:浏览器只有1个连接 所以max_clients = worker_processes * worker_connections
    做反向代理:从浏览器到nginx,然后从nginx到后端, 从后端到nginx,再由nginx到浏览器。max_clients = worker_processes * worker_connections/4

    ?0??分类:Nginx标签:Gzip压缩,发表评论Trackback?
    1. 本文目前尚无任何评论.
    ?Nginx惯用配置Nginx惯用配置??订阅
    • Twitter?搜索:

      近期文章
      • DD-WRT 白名单设置
      • android 通过本地图片或者拍照方式设置头像
      • 阿里云服务器上安装Zimbra for Centos5.4 32bit
      • linux下配置subversion1.8和apache with https
      • Centos6.3下DNS服务器的安装和配置

        近期评论

          文章归档
          • 2013 年十月
          • 2013 年九月
          • 2013 年八月
          • 2013 年七月
          • 2013 年六月
          • 2013 年五月
          • 2013 年四月

            分类目录
            • Android
            • CentOS
            • DD-WRT
            • DevTools
            • Hadoop
            • HDFS
            • Java
            • Linux
            • Lucene
            • MongoDB
            • Mysql
            • Nginx
            • Sqlite
            • Tomcat
            • 杂谈
            • 系统监控工具

              功能
              • 注册
              • 登录
              • 文章

                来访者Nginx惯用配置

                站长统计Nginx惯用配置???回到顶部WordPress版权所有 ? 2013 数据为王主题由?NeoEase?提供, 通过?XHTML 1.1?和?CSS 3?验证.

热点排行