首页 > Computer > nginx.conf
2013
12-28

nginx.conf

官方wiki

 

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
#关掉访问日志可以优化服务器

#定义Nginx运行的用户和用户组
#user  nobody;

#nginx进程数
#如果NginX提供了SLL或者gzip,对cpu的使用率较高,且系统有两个以上的cpu
#可设置为等于cpu总核心数
worker_processes  1;

#设置最大打开文件数的限制
worker_rlimit_nofile 65535;S

#error_log  x:/xxxxx/xxxx/log/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#进程文件
pid        logs/nginx.pid;

#Nginx的事件模块,用于控制Nginx如何处理连接,参数会影响性能,慎重设置。
events {
    #单个后台worker process进程的最大并发链接数
    #书本建议值为 65535 
    worker_connections  1024;
    #woker_connections 65535;
    # 并发总数是 worker_processes 和 worker_connections 的乘积
    # 即 max_clients = worker_processes * worker_connections
    # 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4  为什么
    # 为什么上面反向代理要除以4,应该说是一个经验值
    # 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000
    # worker_connections 值的设置跟物理内存大小有关
    # 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数
    # 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
    # 我们来看看360M内存的VPS可以打开的文件句柄数是多少:
    # $ cat /proc/sys/fs/file-max
    # 输出 34336
    # 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
    # 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置
    # 使得并发总数小于操作系统可以打开的最大文件数目
    # 其实质也就是根据主机的物理CPU和内存进行配置
    # 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
    # ulimit -SHn 65535
}




#Nginx的HTTP内核模块,设定http服务器
http {
    #文件扩展名与文件类型映射表
    include       mime.types;
    #默认文件类型
    default_type  application/octet-stream;
    #默认编码
    #charset utf-8; 

    #隐藏Nginx版本号
    #server_tokens off

   #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  x:/xxxx/xxxx/log/access.log  main;
    #关闭日志
    #access_log off;
    #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件
    #对于普通应用设为 on,
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。
    #注意:如果图片显示不正常把这个改成off。
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  60;


    #启用gzip压缩功能
    #gzip  on;
    #用于设置响应体的最小长度,单位为字节。
    #gzip_min_length 1000;
    #设置启用或禁用从代理服务器上收到的响应体Gzip压缩功能
    # expired---如果Expires header阻止缓存,那么启用压缩
    # auth -----假如设置了Authorization header,则启用压缩
    #gzip_proxied expired no-cache no-store private auth;
    #gzip_types text/plain application/xml;
    #gzip_disable "MSIE [1-6].";

    #用于指定客户端请求体的最大值。超过将收到413错误
    client_max_body_size       16m;
    #指定客户端请求体缓存的大小。
    #入股请求体大于该缓存大小,那么整个请求体或者请求体的某些部分会被写入临时文件
    #默认值 8k/16k
    #默认值等于两页面的大小,页面的大小依赖于所在的操作系统
    client_body_buffer_size    256k;
    proxy_temp_file_write_size 128k;
    proxy_temp_path  x:/xxx/xxxxx/public;
    #levels设置目录层次
    #keys_zone设置缓存名字和共享内存大小
    #inactive在指定时间内没人访问则被删除在这里是1天
    #max_size最大缓存空间
    #proxy_cache_path x:/xxxx/xxx/cache levels=1:2 keys_zone=cache_one:256m inactive=2d max_size=300m;




    upstream mywebapp_thin 
    {
    #指定服务器组的负载均衡方法,请求基于客户端的IP地址在服务器间进行分发。 
    #IPv4地址的前三个字节或者IPv6的整个地址,会被用来作为一个散列key。 
    #这种方法可以确保从同一个客户端过来的请求,会被传给同一台服务器。
    #除了当服务器被认为不可用的时候,这些客户端的请求会被传给其他服务器,
    #而且很有可能也是同一台服务器。
    #如果使用了该指明,那么将会导致客户端的请求以客户端的IP地址分配在upstream中的server之间。
    #它的关健技术在于对这个请求客户但ip地址进行哈希计算
    #这种方法保证了客户端请求总是能够传递到同一台后台服务器,但是如果该服务器被认定为无效,
    #那么这个客户端的请求将会被传递到其他服务器。
    #可以高概率将客户端请求总是连接到同一台服务器
    #如果使用这个指令,就不可以使用权重。
    ip_hash;
    #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。
    #weigth参数表示权值,权值越高被分配到的几率越大。
    #如果服务器要移除,在 ip后加个down
    #backup表示备用
    server 127.0.0.1:3000;
    server 127.0.0.1:3001 down;
    }



    #设定虚拟主机配置
    server {
        #监听端口
        listen       80 default_server;
        #定义使用 localhost访问
        #域名可以有多个,用空格隔开
        #将进入的HTTP请求的主机头(Host header)与Nginx配置文件中各个Server{...}区段比较
        #并且选择第一个被匹配的server区段——。
        #服务器名字按照一下顺序处理:
        #1.全域名,静态域名
        #2.开始部分使用通配符的域名,例如:*.exmple.com
        #3.结尾部分使用通配符的域名,例如:www.example.*
        #4.带有正则表达式的域名。
        server_name  localhost;

        #默认编码
        #charset koi8-r;

        #rewrite_log on;

        #设定本虚拟主机的访问日志
        #access_log  logs/host.access.log  main;
        #access_log  x:/xxx/xxx/log/host.access.log;

        root   x:/xxx/xxx/public;



        #图片缓存时间设置
        #location ~* ^/(images|javascripts|stylesheets|img)/ 
        #location ~* .(gif|jpg|jpeg|png|bmp|swf)$ 
        #{
        #    root   x:/xx/xxx/public;
        #    access_log    off;
        #    log_not_found off;
        #    expires       max;

            #通过key来hash,定义KEY的值
        #    proxy_cache_key      $host$uri$is_args$args;
            #根keys_zone后的内容对应
        #    proxy_cache         cache_one;
            #哪些状态缓存多长时间
        #    proxy_cache_valid    200 302 7d;
            #其他的缓存多长时间
        #    proxy_cache_valid    301 3d;
        #    proxy_cache_valid    any 1m;

        #   if (!-f $request_filename) {
        #    proxy_pass http://mywebapp_thin;
        #    break;
        #    } 
        #break;
        #}

        #允许根据URI的需要进行配置访问
        #可以跟进字面字符串配置也可以根据正则表达式配置
        #如果使用正则表达式配置,必须使用一下前缀
        # “~” 区分大小写匹配
        # “~*” 不区分大小写
        #先按照字面字符串检测,然后再正则表达式,正则表达式
        #默认请求,对 "/" 启用反向代理
        location / {
            #定义了一个请求的根文档目录
            root   x:/xxx/xxx/public;
            #定义首页索引文件的名称
            index  index.html index.htm;
            if (!-f $request_filename) {
            proxy_pass http://mywebapp_thin;
             break;
            } 
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #以下是一些反向代理的配置,可选。
            proxy_set_header Host $host;
            #允许客户端请求的最大单文件字节数
            client_max_body_size 10m; 
            #缓冲区代理缓冲用户端请求的最大字节数,
            client_body_buffer_size 128k; 
            #nginx跟后端服务器连接超时时间(代理连接超时)
            proxy_connect_timeout 90; 
            #后端服务器数据回传时间(代理发送超时)
            proxy_send_timeout 90;
            #连接成功后,后端服务器响应时间(代理接收超时) 
            proxy_read_timeout 90; 
            #设置代理服务器(nginx)保存用户头信息的缓冲区大小
            proxy_buffer_size 4k; 
            #proxy_buffers缓冲区,网页平均在32k以下的设置
            proxy_buffers 4 32k;
            #代理的时候,开启或关闭缓冲后端服务器的响应。 
            proxy_buffering on;
            #高负荷下缓冲大小(proxy_buffers*2)
            proxy_busy_buffers_size 64k; 
            #设定缓存文件夹大小,大于这个值,将从upstream服务器传
            proxy_temp_file_write_size 64k;

              #通过key来hash,定义KEY的值
        #    proxy_cache_key      $host$uri$is_args$args;
            #根keys_zone后的内容对应
        #    proxy_cache         cache_one;
            #哪些状态缓存多长时间
        #    proxy_cache_valid    200 302 7d;
            #其他的缓存多长时间
        #    proxy_cache_valid    301 3d;
        #    proxy_cache_valid    any 1m;
        }


        #指定一个uri,在访问出错的时候会显示的页面
        #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;
        #}

        #图片缓存时间设置
        #location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
        #{
        #    expires 10d;
        #}  
        #JS和CSS缓存时间设置
        #location ~ .*.(js|css)?$
        #{
        #    expires 1h;
        #}

        #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;
    }


    # 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;
    #    }
    #}

}

最后编辑:
作者:wy182000
这个作者貌似有点懒,什么都没有留下。

留下一个回复