fpm配置文件的协会结构介绍,Nginx配置详解

上一篇博文已经讲了LNMP环境搭建详细教程,安装好后首先须要了然nginx的安顿文件:/usr/local/nginx/conf/nginx.conf,我将配备文件内的表明项和临时用不到的都去掉了,那样看起来更为酣畅:

1.nginx的配置文件路径
诚如的话,安装nginx的时候,配置文件的默许路径是
/usr/local/nginx/conf/nginx.conf。
咱俩得以拔取一个链接文件,将conf目录指向一个特定目录,以方便管理。例如,作者所在的商号喜欢将享有的服务器配置文件集中在/home/server_config中,然后在该目录中新建一个子目录
nginx,再将/usr/local/nginx/conf
通过链接文件指向/home/server_config/nginx。

linux系统LNMP的nginx、php配置(nginx部分),lnmpnginx

LNMP的nginx、php配置(nginx部分)

一、nginx配置文件/usr/local/nginx/conf/nginx.conf

清空nginx.conf,将上面的布置拷贝进去:

user nobody nobody;  
worker_processes 2;  
error_log /usr/local/nginx/logs/nginx_error.log crit;  
pid /usr/local/nginx/logs/nginx.pid;  
worker_rlimit_nofile 51200;  
events  
{  
use epoll;  
worker_connections 6000;  
}  

http  
{  
include mime.types;  
default_type application/octet-stream;  
server_names_hash_bucket_size 3526;  
server_names_hash_max_size 4096;  
log_format combined_realip 'remote_addr $http_x_forwarded_for [$time_local]' '$host "$request_uri" $status' '"$http_referer" "$http_user_agent"';  
sendfile on;  
tcp_nopush on;  
keepalive_timeout 30;  
client_header_timeout 3m;  
client_body_timeout 3m;  
send_timeout 3m;  
connection_pool_size 256;  
client_header_buffer_size 1k;  
large_client_header_buffers 8 4k;  
request_pool_size 4k;  
output_buffers 4 32k;  
postpone_output 1460;  
client_max_body_size 10m;  
client_body_buffer_size 256k;  
client_body_temp_path /usr/local/nginx/client_body_temp;  
proxy_temp_path /usr/local/nginx/proxy_temp;  
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;  
fastcgi_intercept_errors on;  
tcp_nodelay on;  
gzip on;  
gzip_min_length 1k;  
gzip_buffers 4 8k;  
gzip_comp_level 5;  
gzip_http_version 1.1;  
gzip_types text/plain application/x-javascript text/css text/htm applicationxml;  
##配置虚拟机
server
{
listen 80;
server_name localhost;
index index.html index.htm index.php;
root /usr/local/nginx/html;
location ~ \.php$ {
     include fastcgi_params;
     fastcgi_pass 127.0.0.1:9000;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
      }
}
}

fpm配置文件的协会结构介绍,Nginx配置详解。 

虚拟机配置server能够独立在conf/vhosts/下单独建vhosts.conf举办布署,然后在nginx.conf里加入:

include /vhosts/*.conf

表达、重新加载nginx:

 

/usr/local/nginx/sbin/nginx -t  
/usr/local/nginx/sbin/nginx -s reload

 

此刻,在浏览器里开展访问:

澳门葡京备用网址 1

二、将之前lamp搭建的discuz迁移到nginx上运行:

 

cd /usr/local/nginx/conf/vhosts  
cp vhosts.conf discuz.conf  
vi discuz.conf  
/usr/local/nginx/sbin/nginx -t  
/usr/local/nginx/sbin/nginx -s reload  

澳门葡京备用网址 2

那会儿就能够访问原本的discuz了:

澳门葡京备用网址 3

三、php-fpm的配置

布署文件路径:/usr/local/php-fpm/etc/php-fpm.conf,清空后,粘贴上边的代码:

 

[global]  
pid = /usr/local/php-fpm/var/run/php-fpm.pid  
error_log = /usr/local/php-fpm/var/log/php-fpm.log  

[www]  //一个站点对应一个池子,监听端口也不同
listen = 127.0.0.1:9000   
;listen = /tmp/php-fcgi.sock  
user = php-fpm  
group = php-fpm  
listen.owner = nobody  
listen.group = nobody  
pm = dynamic            //动态进程数,如指定static,则有pm.max_children指定固定子进程数
pm.max_children = 50     //子进程最大数
pm.start_servers = 20    //启动时,子进程数
pm.min_spare_servers = 5  //保证空闲进程最小值,空闲进程低于此值则增加新子进程
pm.max_spare_servers = 35  //保证空闲进程最大值,空闲进程高于此值则进行 清理
pm.max_requests = 500  
rlimit_files = 1024  
slowlog = /usr/local/php-fpm/var/log/slow.log  //定义慢查询日志路径
request_slowlog_timeout = 1  //定义超时时间
php_admin_value[open_basedir]=/data/www:/tmp/   //定义opne_basedir

[www1]  
listen = 127.0.0.1:9001 
;listen = /tmp/php-fcgi.sock  
user = php-fpm  
group = php-fpm  
listen.owner = nobody  
listen.group = nobody  
pm = dynamic  
pm.max_children = 50  
pm.start_servers = 20  
pm.min_spare_servers = 5  
pm.max_spare_servers = 35  
pm.max_requests = 500  
rlimit_files = 1024

 

四、nginx高级配置

1.部署第一个虚拟主机

可以直接在nginx.conf参预

include vhosts/*.conf;

诸如此类,就足以一向在/conf/vhosts目录下创设其他的虚拟主机配置文件。

2.设置默许虚拟主机

虚拟主机配置文件中修改这一行就可以了,在浏览器中输入ip访问,会一向访问那么些默许虚拟主机;

listen 80 default_server;

3.用户认证

因为要动用htpasswd,所以首先要安装apache,直接使用yum install
httpd安装,就足以采纳htpasswd:

 

/usr/bin/htpasswd -c /usr/local/nginx/conf/.htpasswd weix

 

澳门葡京备用网址 4

在nginx的布局文件扩展:

 

location / {  
            root /data/www;
            auth_basic  "Auth";  
            auth_basic_user_file  /usr/local/nginx/conf/.htpasswd;  
           } 

 

澳门葡京备用网址,4、域名重定向

在nginx的配备文件增加:

 

if ($host != 'www.1.com'){  
      rewrite ^/(.*)$ http://www.1.com/$1 permanent;  
              } 

 

澳门葡京备用网址 5

5、日志切割

布局日志:

在对应虚拟服务器配置文件discuz.conf中参预:

access_log /home/logs/discuz.log combined_realip;

其中combined_realip是现已在nginx.conf中定义的日志格式;

澳门葡京备用网址 6

编写shell:

vim /usr/local/sbin/logrotate.sh

 

#!/bin/bash  
d=`date -d "-1 day" +%Y%m%d`  
/bin/mv /home/logs/discuz.log /home/logs/discuz_$d.log  
/etc/init.d/nginx - reload >/dev/null 2>/dev/null  
cd /home/logs  
gzip discuz_$d.log

 

将脚本参加布置职责,就可以每一日分割日志并拓展削减了;

6、静态文件不记录日志,配置缓存

编制对应的虚拟机配置文件,参加如下代码:

 

loation ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
     {  
                expires 30d;  
                access_log off;  
     }  
location ~ .*\.(js|css)?$  
     {  
               expires 12h;  
               access_log off;  
     } 

 

澳门葡京备用网址 7

7、防盗链

编排虚拟主机配置文件,参预如下代码,注意,location只会同盟五遍,gif、jpg等若是别的定义了不记录日志,防盗链若是在背后会导致防盗链失效,所以,配置的时候要和任何针对这一个文件操作的写在共同,例如截图中,就多加了两行对日记和缓存时间的定义;

 

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls|)$ {  
      valid_referers none blocked server_names *.1.com *.a.com *.b.com *.baidu.com *.soso.com *.google.com *.google.cn ;  
      if ($invalid_referer){  
      return 403;  
      #rewrite ^/ http:/www.example.com/nophoto.gif;  
}  
}

澳门葡京备用网址 8

LNMP的nginx、php配置(nginx部分)
一、nginx配置文件/usr/local/nginx/conf/nginx.conf
清空nginx.conf,…

咱俩先是看望有啥样默许配置文件,打开nginx.conf文件,查看尾行部分

// 全局区
worker_processes 1; // 有1个工作的子进程,会占用CPU,可自由设置,一般设置为:CPU数*核数,如果想查看工作中的进程,可以使用命令:ps aux|grep nginx

Event { // 一般是配置nginx连接的特性
   worker_connections 1024; // 这是指一个worker能同时允许多少连接

} 

http { //这是配置http服务器的主要段

 #日志管理默认为main格式,记录的内容为: 远程IP:$remote_addr | 用户时间:$remote_user [$time_local] | 请求方法(如GET/POST):$request | 请求状态:$status | 请求体body长度:$body_bytes_sent | referer来源信息:$http_referer | 用户代理/蜘蛛$http-user-agent | 被转发的请求的原始IP:$http_x_forwarded_for()
   log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #默认的日志配置
             '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" "$http_x_forwarded_for"';

    server { //这里整个server的意思就是当你在浏览器中请求127.0.0.1这个地址时,location匹配到后定位到/usr/local/nginx/html/index.html

        listen 80;  #监听端口
        server_name 127.0.0.1; #监听域名
     access_log  logs/host.access.log  main; #开启日志

        location / {//定位,把特殊的路径或文件再次定位
        root html;  #根目录定位,可以使用相对路径,此处所说的根目录为/usr/local/nginx目录,html也是相对于/usr/local/nginx目录,也可使用绝对路径定位,比如你的项目在/var/www/html/目录下,那你就可以改为root /var/www/html/
            index  index.html index.htm;  
        }

     location ~ \.php$ {//nginx转发PHP请求,碰到.php文件,把根目录定位到html,把请求转交给9000端口PHP进程, 并告诉PHP进程当前的请求的脚本是/scripts$fastcgi_script_name
       root           html;
       fastcgi_pass   127.0.0.1:9000; #默认PHP9000端口
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
       include        fastcgi_params;
     }

    }
}

2.Virtual host的配备文件路径 普普通通,笔者所在的小卖部会把每个Virtualhost的配备文件写成一个单身的文书。这几个独立的文书独立在不一致的类型中。

[root@hongshaorou nginx]# tail -n 2 nginx.conf 
    include /etc/nginx/conf.d/*.conf;
}

 

但有个技巧,大家可以在nginx.conf所在的目录下,建一个子目录include,在include目录下,是一多级的链接文件,这几个文件指向了Virtualhost的布局文件。

大家看来将/etc/nginx/conf.d/文件下此外以.conf结尾的配备文件都导入到该公文中。

3.php-fpm的布局文件路径
日常的,php-fpm的执行文书在php安装路径下的sbin目录中。(在此处,有个题外话,安装php时,安装目录一般默许为/usr/local,那不要一个好的挑三拣四,因为部分时候,一台服务器上或者须求同时设有多种本子的php。一个优质的
已毕是将分化版本的php分别设置在/usr/local/php-xxx/中,xxx代表php的本子)。
而php-fpm的布署文件则默许放在php安装路径下的etc目录中。但实际,php-fpm的配备文件可以在起步php-fpm时
指定路线,区其他php-fpm实例能够指定差其余布置文件。而那也具备现实意义:在一台服务器上Nginx可能还要监听
着多少个VirtualHost,当重启某个Host的时候,只需重启对应的php-fpm实例即可。

咱俩看看/etc/nginx/conf.d/文件下默许有啥文件

4.相继pool的布署文件路径 能够自动指定。但貌似地,大家会将其集中管理。作者所在的信用社则拔取将其放在/var/run下,并针对每个实例建一
个文本夹,文件夹中除了放php-fpm外,还会放对应pid文件,以及对应的unix:socket文件。

[root@hongshaorou conf.d]# ls
default.conf

你或许感兴趣的稿子:

  • nginx配置文件详解中文版
  • Nginx服务器配置文件完全解析
  • Nginx配置文件(nginx.conf)配置详解(计算)
  • 详解Nginx服务器中的nginx.conf配置文件
  • Nginx配置文件nginx.conf的常用配置方式
  • 正如完好的Nginx配置文件nginx.conf常用参数中文详解
  • Nginx的nginx.conf配置文件中文注释表达
  • nginx配置文件nginx.conf汉语注释表达

也就是说默许意况下有多个布局文件nginx.conf default.conf

昨天大家最首要学习nginx.conf配置文件,该配置文件重视分为三大块

第一块:

user        设置nginx服务的系统使用用户
worker_processes    工作进程数
error_log    nginx的错误日志
pid    nginx服务启动时候pid

第二块:(时间)

events     worker_connections   每个进程允许最大连接数
                use    工作进程数 (设置是epoll 还是select)

第三块:

澳门葡京备用网址 9

图片.png

我们查阅文件详解

######Nginx配置文件nginx.conf中文详解#####

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

#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 8;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /usr/local/nginx/logs/error.log info;

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

#指定进程可以打开的最大描述符:数目
#工作模式与连接数上限
#这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
#现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。
#这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。
worker_rlimit_nofile 65535;

events
{
    #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型
    #是Linux 2.6以上版本内核中的高性能网络I/O模型,linux建议epoll,如果跑在FreeBSD上面,就用kqueue模型。
    #补充说明:
    #与apache相类,nginx针对不同的操作系统,有不同的事件模型
    #A)标准事件模型
    #Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll
    #B)高效事件模型
    #Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。
    #Epoll:使用于Linux内核2.6版本及以后的系统。
    #/dev/poll:使用于Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
    #Eventport:使用于Solaris 10。 为了防止出现内核崩溃的问题, 有必要安装安全补丁。
    use epoll;

    #单个进程最大连接数(最大连接数=连接数*进程数)
    #根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。
    worker_connections 65535;

    #keepalive超时时间。
    keepalive_timeout 60;

    #客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。
    #分页大小可以用命令getconf PAGESIZE 取得。
    #[root@web001 ~]# getconf PAGESIZE
    #4096
    #但也有client_header_buffer_size超过4k的情况,但是client_header_buffer_size该值必须设置为“系统分页大小”的整倍数。
    client_header_buffer_size 4k;

    #这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
    open_file_cache max=65535 inactive=60s;

    #这个是指多长时间检查一次缓存的有效信息。
    #语法:open_file_cache_valid time 默认值:open_file_cache_valid 60 使用字段:http, server, location 这个指令指定了何时需要检查open_file_cache中缓存项目的有效信息.
    open_file_cache_valid 80s;

    #open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
    #语法:open_file_cache_min_uses number 默认值:open_file_cache_min_uses 1 使用字段:http, server, location  这个指令指定了在open_file_cache指令无效的参数中一定的时间范围内可以使用的最小文件数,如果使用更大的值,文件描述符在cache中总是打开状态.
    open_file_cache_min_uses 1;

    #语法:open_file_cache_errors on | off 默认值:open_file_cache_errors off 使用字段:http, server, location 这个指令指定是否在搜索一个文件是记录cache错误.
    open_file_cache_errors on;
}



#设定http服务器,利用它的反向代理功能提供负载均衡支持
http
{
    #文件扩展名与文件类型映射表
    include /etc/nginx/mime.types;

    #默认文件类型
    default_type application/octet-stream;

    #默认编码
    #charset utf-8;

    #服务器名字的hash表大小
    #保存服务器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。如果hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.
    server_names_hash_bucket_size 128;

    #客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
    client_header_buffer_size 32k;

    #客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取。
    large_client_header_buffers 4 64k;

    #设定通过nginx上传文件的大小
    client_max_body_size 8m;

    #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
    #sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
    sendfile on;

    #开启目录列表访问,合适下载服务器,默认关闭。
    autoindex on;

    #此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用
    tcp_nopush on;

    tcp_nodelay on;

    #长连接超时时间,单位是秒
    keepalive_timeout 120;

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

    #gzip模块设置
    gzip on; #开启gzip压缩输出
    gzip_min_length 1k;    #最小压缩文件大小
    gzip_buffers 4 16k;    #压缩缓冲区
    gzip_http_version 1.0;    #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
    gzip_comp_level 2;    #压缩等级
    gzip_types text/plain application/x-javascript text/css application/xml;    #压缩类型,默认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
    gzip_vary on;

    #开启限制IP连接数的时候需要使用
    #limit_zone crawler $binary_remote_addr 10m;



    #负载均衡配置
    upstream piao.jd.com {

        #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
        server 192.168.80.121:80 weight=3;
        server 192.168.80.122:80 weight=2;
        server 192.168.80.123:80 weight=3;

        #nginx的upstream目前支持4种方式的分配
        #1、轮询(默认)
        #每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
        #2、weight
        #指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
        #例如:
        #upstream bakend {
        #    server 192.168.0.14 weight=10;
        #    server 192.168.0.15 weight=10;
        #}
        #2、ip_hash
        #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
        #例如:
        #upstream bakend {
        #    ip_hash;
        #    server 192.168.0.14:88;
        #    server 192.168.0.15:80;
        #}
        #3、fair(第三方)
        #按后端服务器的响应时间来分配请求,响应时间短的优先分配。
        #upstream backend {
        #    server server1;
        #    server server2;
        #    fair;
        #}
        #4、url_hash(第三方)
        #按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
        #例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
        #upstream backend {
        #    server squid1:3128;
        #    server squid2:3128;
        #    hash $request_uri;
        #    hash_method crc32;
        #}

        #tips:
        #upstream bakend{#定义负载均衡设备的Ip及设备状态}{
        #    ip_hash;
        #    server 127.0.0.1:9090 down;
        #    server 127.0.0.1:8080 weight=2;
        #    server 127.0.0.1:6060;
        #    server 127.0.0.1:7070 backup;
        #}
        #在需要使用负载均衡的server中增加 proxy_pass http://bakend/;

        #每个设备的状态设置为:
        #1.down表示单前的server暂时不参与负载
        #2.weight为weight越大,负载的权重就越大。
        #3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
        #4.fail_timeout:max_fails次失败后,暂停的时间。
        #5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

        #nginx支持同时设置多组的负载均衡,用来给不用的server来使用。
        #client_body_in_file_only设置为On 可以讲client post过来的数据记录到文件中用来做debug
        #client_body_temp_path设置记录文件的目录 可以设置最多3层目录
        #location对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡
    }

虚拟主机的安排 /etc/nginx/conf.d/default.conf

    server
    {
        #监听端口
        listen 80;

        #域名可以有多个,用空格隔开
        server_name www.jd.com jd.com;
        index index.html index.htm index.php;
        root /data/www/jd;

        #对******进行负载均衡
        location ~ .*.(php|php5)?$
        {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
        }

        #图片缓存时间设置
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires 10d;
        }

        #JS和CSS缓存时间设置
        location ~ .*.(js|css)?$
        {
            expires 1h;
        }

        #日志格式设定
        #$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
        #$remote_user:用来记录客户端用户名称;
        #$time_local: 用来记录访问时间与时区;
        #$request: 用来记录请求的url与http协议;
        #$status: 用来记录请求状态;成功是200,
        #$body_bytes_sent :记录发送给客户端文件主体内容大小;
        #$http_referer:用来记录从那个页面链接访问过来的;
        #$http_user_agent:记录客户浏览器的相关信息;
        #通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
        log_format access '$remote_addr - $remote_user [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" $http_x_forwarded_for';

        #定义本虚拟主机的访问日志
        access_log  /usr/local/nginx/logs/host.access.log  main;
        access_log  /usr/local/nginx/logs/host.access.404.log  log404;

        #对 "/" 启用反向代理
        location / {
            proxy_pass http://127.0.0.1:88;
            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;

            #缓冲区代理缓冲用户端请求的最大字节数,
            #如果把它设置为比较大的数值,例如256k,那么,无论使用firefox还是IE浏览器,来提交任意小于256k的图片,都很正常。如果注释该指令,使用默认的client_body_buffer_size设置,也就是操作系统页面大小的两倍,8k或者16k,问题就出现了。
            #无论使用firefox4.0还是IE8.0,提交一个比较大,200k左右的图片,都返回500 Internal Server Error错误
            client_body_buffer_size 128k;

            #表示使nginx阻止HTTP应答代码为400或者更高的应答。
            proxy_intercept_errors on;

            #后端服务器连接的超时时间_发起握手等候响应超时时间
            #nginx跟后端服务器连接超时时间(代理连接超时)
            proxy_connect_timeout 90;

            #后端服务器数据回传时间(代理发送超时)
            #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
            proxy_send_timeout 90;

            #连接成功后,后端服务器响应时间(代理接收超时)
            #连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
            proxy_read_timeout 90;

            #设置代理服务器(nginx)保存用户头信息的缓冲区大小
            #设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头,默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小
            proxy_buffer_size 4k;

            #proxy_buffers缓冲区,网页平均在32k以下的设置
            #设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k
            proxy_buffers 4 32k;

            #高负荷下缓冲大小(proxy_buffers*2)
            proxy_busy_buffers_size 64k;

            #设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长
            #设定缓存文件夹大小,大于这个值,将从upstream服务器传
            proxy_temp_file_write_size 64k;
        }


        #设定查看Nginx状态的地址
        location /NginxStatus {
            stub_status on;
            access_log on;
            auth_basic "NginxStatus";
            auth_basic_user_file confpasswd;
            #htpasswd文件的内容可以用apache提供的htpasswd工具来产生。
        }

        #本地动静分离反向代理配置
        #所有jsp的页面均交由tomcat或resin处理
        location ~ .(jsp|jspx|do)?$ {
            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_pass http://127.0.0.1:8080;
        }

        #所有静态文件由nginx直接读取不经过tomcat或resin
        location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|
        pdf|xls|mp3|wma)$
        {
            expires 15d; 
        }

        location ~ .*.(js|css)?$
        {
            expires 1h;
        }
    }
}
######Nginx配置文件nginx.conf中文详解#####

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website