• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解nginx 配置文件解读

    nginx配置文件主要分为四个部分:

    main{#(全局设置)
    http{#服务器
    upstream{} #(负载均衡服务器设置:主要用于负载均衡和设置一系列的后端服务器)
    server{ #(主机设置:主要用于指定主机和端口)
    location{}#(URL匹配特点位置的设置)
    }
    }
    }
    
    

    server继承main,location继承server,upstream即不会继承其他设置也不会被继承。

    一、main 全局配置

    nginx在运行时与具体业务功能(比如http服务或者email服务代理)无关的一些参数,比如工作进程数,运行的身份等。

    user www www;
    worker_processes 4;
    worker_cpu_affinity 0001 0010 0100 1000;
    error_log /var/logs/nginx_error.log crit;
    pid    /usr/local/webserver/nginx/nginx.pid;
    worker_rlimit_nofile 65535;

    user www www;: 指定nginx进程使用什么用户启动

    worker_processes 4; : 指定启动多少进程来处理请求,一般情况下设置成CPU的核数,如果开启了ssl和gzip更应该设置成与逻辑CPU数量一样甚至为2倍,可以减少I/O操作。使用grep ^processor /proc/cpuinfo | wc -l查看CPU核数。

    worker_cpu_affinity 0001 0010 0100 1000;: 在高并发情况下,通过设置将CPU和具体的进程绑定来降低由于多核CPU切换造成的寄存器等现场重建带来的性能损耗。如worker_cpu_affinity 0001 0010 0100 1000; (四核)。

    error_log /var/logs/nginx_error.log crit;: error_log是个主模块指令,用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。

    pid /usr/local/webserver/nginx/nginx.pid;: 指定进程pid文件的位置。worker_rlimit_nofile 65535;: 用于指定一个nginx进程可以打开的最多文件描述符数目,这里是65535,需要使用命令“ulimit -n 65535”来设置。

    二、events模块

    events{
     use epoll;
     worker_connections   65536;
    }

    三、http服务器

    http{
     include    mime.types;
     default_type application/octet-stream;
     #charset gb2312;
     }

    3.1 HTTP参数之客户端head缓存

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k; 
    large_client_header_buffers 4 128k; 
    client_max_body_size 10m; 
    client_body_buffer_size 128k; 
    sendfile on ; 
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65 : 
    client_body_timeout 60s;
    send_timeout 60s;

    3.2 HTTP参数之FastCGI参数

    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 128k; 
    fastcgi_cache TEST; 
    fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; 
    fastcgi_cache_valid 200 302 1h; 
    fastcgi_cache_valid 301 1d; 
    fastcgi_cache_valid any 1m; 

    3.3. HTTP参数之gzip模块设置

    gzip on;
    gzip_min_length 1k;
    gzip_buffers  4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;

    四、nginx 配置虚拟主机

    4.1 配置虚拟主机流程

    http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置。在提供mail服务的代理时,也可以建立若干server。每个server通过监听地址或端口来区分。

    server{
      listen 80 default;
      server_name _;
      index index.html index.htm index.php;
      root /data/htdocs/www;
      #server_name_in_redirect off;
      
      location ~ .*\.(php|php5)?${
       #fastcgi_pass unix:/tmp/php-cgi.sock;
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_index index.php;
       include fcgi.conf;
      }
      
      location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${
       expires   30d;
      }
      
      location ~ .*\.(js|css)?${
       expires   1h;
      }
     }

    4.2 sever模块下location模块的写法

    关于location匹配规则的写法,参考死磕nginx系列–使用nginx做负载均衡

    proxy_pass http://backend

    请求转向backend定义的服务器列表,即反向代理,对应upstream负载均衡器。也可以proxy_pass http://ip:port。

    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    五、其它nginx参数

    5.1 访问控制 allow/deny

    Nginx 的访问控制模块默认就会安装,而且写法也非常简单,可以分别有多个allow,deny,允许或禁止某个ip或ip段访问,依次满足任何一个规则就停止往下匹配。如:

    location /nginx-status {
     stub_status on;
     access_log off;
    # auth_basic  "NginxStatus";
    # auth_basic_user_file  /usr/local/nginx-1.6/htpasswd;
     allow 192.168.10.100;
     allow 172.29.73.0/24;
     deny all;
    }

    我们也常用 httpd-devel 工具的 htpasswd 来为访问的路径设置登录密码:

    # htpasswd -c htpasswd admin
    New passwd:
    Re-type new password:
    Adding password for user admin
    # htpasswd htpasswd admin  //修改admin密码
    # htpasswd htpasswd sean  //多添加一个认证用户

    这样就生成了默认使用CRYPT加密的密码文件。打开上面nginx-status的两行注释,重启nginx生效。

    5.2 列出目录 autoindex

    Nginx默认是不允许列出整个目录的。如需此功能,打开nginx.conf文件,在location,server 或 http段中加入如下参数:

    location /images {
     root  /var/www/nginx-default/images;
     autoindex on;
     autoindex_exact_size off;
     autoindex_localtime on;
     }

    六、附录:通用配置文件

    user www www;
    worker_processes 2;
    error_log logs/error.log;
    #error_log logs/error.log notice;
    #error_log logs/error.log info;
    pid    logs/nginx.pid;
    events {
      use epoll;
      worker_connections 2048;
    }
    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 65;
     # gzip压缩功能设置
      gzip on;
      gzip_min_length 1k;
      gzip_buffers  4 16k;
      gzip_http_version 1.1;
      gzip_comp_level 6;
      gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
      gzip_vary on;
     
     # http_proxy 设置
      client_max_body_size  10m;
      client_body_buffer_size  128k;
      proxy_connect_timeout  75;
      proxy_send_timeout  75;
      proxy_read_timeout  75;
      proxy_buffer_size  4k;
      proxy_buffers  4 32k;
      proxy_busy_buffers_size  64k;
      proxy_temp_file_write_size 64k;
      proxy_temp_path  /usr/local/nginx/proxy_temp 1 2;
     # 设定负载均衡后台服务器列表 
      upstream backend { 
           #ip_hash; 
           server  192.168.10.100:8080 max_fails=2 fail_timeout=30s ; 
           server  192.168.10.101:8080 max_fails=2 fail_timeout=30s ; 
      }
     # 很重要的虚拟主机配置,多个虚拟机可以复制修改此部分
      server {
        listen    80;
        server_name test.example.com;
        root  /apps/oaapp;
        charset utf-8;
        access_log logs/host.access.log main;
        #对 / 所有做负载均衡+反向代理
        location / {
          root  /apps/oaapp;
          index index.php index.html index.htm;
          proxy_pass    http://backend; 
          proxy_redirect off;
          # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr; 
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        }
        
        #静态文件,nginx自己处理,不去backend请求后端的服务
        location ~* /download/ { 
          root /data/app/nginx/downloads; 
        }
        
        location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {  
          root /data/app/nginx/images;  
          expires   7d; 
        }
        
        location /nginx_status {
          stub_status on;
          access_log off;
          allow 192.168.10.0/24;
          deny all;
        }
        
        location ~ ^/(WEB-INF)/ {  
          deny all;  
        }
        
        #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;
        }
      }
    }

    六、附录:如何查看是否开启了gzip压缩

    如果response header中包含Content-Encoding:gzip则表示开启gzip压缩。

    Connection:keep-alive
    Content-Encoding:gzip
    Content-Type:text/html
    Date:Wed, 29 Mar 2017 10:55:54 GMT
    ETag:W/"58db92af-331a6"
    Last-Modified:Wed, 29 Mar 2017 10:55:43 GMT
    Server:nginx/1.10.3
    Transfer-Encoding:chunked
    Vary:Accept-Encoding

    参考文档

    Full Example Configuration
    优化Nginx中FastCGI参数的实例
    博客 Nginx 配置之性能篇

    到此这篇关于详解nginx 配置文件解读的文章就介绍到这了,更多相关nginx 配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:从连接器组件看Tomcat的线程模型——BIO模式(推荐)
    下一篇:Windows DNS服务器曝蠕虫级漏洞,已存在长达17年
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解nginx 配置文件解读 详解,nginx,配置文件,解读,