• nginx配置文件


     

    Nginx部署

    序言

    Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

    Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

    Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

    牛逼吹的差不多啦,如果你还不过瘾,你可以百度百科或者一些书上找到这样的夸耀,比比皆是。


    Nginx常用功能

    1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。

    这里我给来2张图,对正向代理与反向代理做个诠释,具体细节,大家可以翻阅下资料。

    img

    Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。


    2、负载均衡

    Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

    上3个图,理解这三种负载均衡算法的实现

    img

    Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

    img


    3、web缓存

    Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。


    4、Nginx相关地址

    源码:https://trac.nginx.org/nginx/browser

    官网:http://www.nginx.org/

     

    Nginx配置文件结构

    如果你下载好啦,你的安装文件,不妨打开conf文件夹的nginx.conf文件,Nginx服务器的基础配置,默认的配置也存放在此。

    在 nginx.conf 的注释符号为: #

    默认的 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 文件结构

    ...              #全局块

    events {         #events块
      ...
    }

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

    • 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

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

    • 4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

    • 5、location块:配置请求的路由,以及各种页面的处理情况。

     

    2. nginx.conf 配置文件

    Nginx 配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和 location(URL 匹配特定位置后的设置),每部分包含若干个指令。main 部分设置的指令将影响其它所有部分的设置;server 部分的指令主要用于指定虚拟主机域名、IP 和端口;upstream 的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;location 部分用于匹配网页位置(比如,根目录 "/","/images", 等等)。他们之间的关系式:server 继承 main,location 继承 server;upstream 既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。

    当前 nginx 支持的几个指令上下文:

    2.1 通用

    下面的 nginx.conf 简单的实现 nginx 在前端做反向代理服务器的例子,处理 js、png 等静态文件,jsp 等动态请求转发到其它服务器 tomcat:

    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.0;
       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  itoatest.example.com;
           root   /apps/oaapp;
           charset utf-8;
           access_log  logs/host.access.log  main;
           #对 / 所有做负载均衡+反向代理
           location / {
               root   /apps/oaapp;
               index  index.jsp 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请求tomcat
           location  ~* /download/ {  
               root /apps/oa/fs;  

          }
           location ~ .*/.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$  
          {  
               root /apps/oaapp;  
               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;
          }
      }
     ## 其它虚拟主机,server 指令开始
    }
  • 相关阅读:
    【原创】R61509/SPFD5420A驱动调试总结
    [轉貼]程序员需要具备的基本技能
    Entity SQL 说说IN关键字
    细说可空类型 nullable
    C#值类型与引用类型之我见
    解密区域集成服务器
    序列化对象,使用的三种方式:Xml,Binary,Soap
    有时间就买点书
    hdu2680 Choose the best route
    SQLServer 函数类型简要说明
  • 原文地址:https://www.cnblogs.com/Gaimo/p/15426470.html
Copyright © 2020-2023  润新知