首页 > 代码库 > Nginx配置

Nginx配置

转自:http://www.cnblogs.com/knowledgesea/p/5175711.html

Nginx常用功能

1、Http代理,反向代理

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

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

技术分享

2、负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash

理解这三种负载均衡算法的实现:

 

技术分享

                                                      轮询                                                                                                                                    加权轮询

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

               

 

                                                                                             Ip hash算法

Nginx配置文件结构

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

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

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

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

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

 

实例:nginx配置文件:

user  www; #配置用户组,默认为nobody nobody
worker_processes  2; #允许生成的进程数,默认为1

#指定日志路径,日志级别,这个设置可以放入全局块,http块,server块,
#级别以此为:debug|info|notice|warn|er#ror|crit|alert|emerg
error_log  logs/error.log; 
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#指定ngnix  pid进程运行文件存放地址
#pid        logs/nginx.pid;


worker_rlimit_nofile 51200;
events
{
    use epoll;#事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
    worker_connections 51200; #设置最大连接数
}



http {
    include       mime.types;#文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain
    #自定义日志格式
    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                     ‘"$http_user_agent" "$http_x_forwarded_for" $http_cmdid ‘;
#$request_body
    access_log  logs/access.log  main;
    #access_log off; #取消服务日志
    sendfile        on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    #tcp_nopush     on;

    #keepalive_timeout  0; #连接超时时间
  client_max_body_size 150M;
  keepalive_timeout  180;
  fastcgi_connect_timeout 600;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 256k;
  fastcgi_buffers 4 256k;
  fastcgi_busy_buffers_size 256k;
  fastcgi_temp_file_write_size 256k;

  gzip on;
  gzip_min_length  1k;
  gzip_buffers     4 32k;
  gzip_http_version 1.0;
  gzip_comp_level 6;
  gzip_vary on;

   gzip_types       text/plain application/x-javascript text/css application/xml text/javascript;

#    server{
#       location ~ ^/(status)$ {
#                                                include fastcgi_params;
#                                                fastcgi_pass 127.0.0.1:9000;
#                                                fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
#                               }
#        }

# 包含所有的虚拟主机的配置文件 
include /usr/local/nginx/conf/vhosts/*.conf;
}

如下就是一个 作为虚拟主机的配置文件(在红字部分被引用),

server {
        listen 6200;#监听接口
        server_name  localhost; #监听地址
        charset utf-8;
        client_max_body_size 20M;

        access_log /usr/local/nginx/logs/kmgatewayssl.log kmgatew_nossl;

        location / {
            root /usr/local/nginx/kmgateway/enter_gate;
            index  index.php;
#           if ( $http_cmdid ~* ^T([A-Z]*[0-9]*[0-9])$ ){
#               proxy_pass http://192.168.84.176:9303;
#               break;
#           }

            if ( $http_cmdid ~* (AZ87|AZ89|A334|A336|A338|A342|A350|A186) )
            {
                proxy_pass http://192.168.10.23:9520; # #请求转向mysvr 定义的服务器列表
                break;
            }
        }

 

Nginx配置