`
kingj
  • 浏览: 425705 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

nginx配置文件

 
阅读更多

第一,   nginx 的介绍

         1 nginx 0.7.48 版本后凯斯,支持烈士squid的缓存功能。该缓存是把URL及相关组合当作key,然后用md5编码哈希后保存在硬盘上,因此nginx 支持任意的URl连接,同时也支持404/301/302 这样非200 状态码。虽然目前官方nginx web 缓存服务器只能为指定的URL或者状态码设置过期时间,但是不支持类似squidpurge 指令,需要手动清除缓存页面,但是,通过第三方的nginx模块,可以清楚指定URL的缓存,当然nginxweb缓存服务主要是由proxy_cache相关指令集和fastcgi_cache相关指令集构成,而proxy_cache 主要是用于反向代理,又来缓存后端服务器的内容源而Fastcgi_cache 主要缓存的是动态程序

下载相关的软件包

prce-8.00.tar.gz    ngx_cache_purge-1.2.tar.gz   nginx-0.8.53.tar.gz

 

第三 安装相关的软件包

#tar  xvf  prce-8.00.tar.gz

#cd  prce-8.00

#./configure

#make && make install 

#useradd -s /sbin/nologin  www

#cd ../

#tar –xvf ngx_cache_purge-1.2.tar.gz

#tar  nginx-0.8.53.tar.gz

#cd nginx-0.8.53

#./configure  --user=www –group=www –add-module=../ngx_cache_purge-1.2 –prefix=/usr/local/nginx  --with-http_stub_status_module   --with-http_ssl_module

#make && make install 

第四,修改并配置nginx  

#cd /usr/local/nginx/conf

 #vim nginx.conf 

#user  nobody;

#开启的进程数

worker_processes  1;

#定义错误日志的路径及其日志级别

error_log /usr/local/nginx/logs/error.log crit;

#nginx 的进程

pid        logs/nginx.pid; 

#specifiles the value for maximum file descriptors that can be opened by this process

#文件句柄数,和系统单进程打开的文件数相同,不必理会进程个数

worker_rlimit_nofile  65535;

events {

    use epoll;

    worker_connections  1024; #定义的是单个进程的连接数,该值受系统进程打开文件数限制,需要修改打开的文件句柄数,但是max_client = worker_proxesses X work_connextions

}

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" '

                      '"request_method $scheme://$host$request_uri $server_protocol" $status $body_bytes_sent'

                      '"$http_user_agent" "$http_x_forwarded_for"';

   指定服务器名称哈希的大小,hash bucket size 等于一路处理器缓存大小,与server_names_hash_max_size 共同控制保存服务器名的HASH

   server_names_hash_bucket_size 128;

  以下两项是设定客户端请求Header头缓存去的大小,为个数。128k 为大小。申请4128k。当http uri太长或者request header 过大时会报414  Request URI too large 或者400 bad request

   client_header_buffer_size 32k;

   large_client_header_buffers 4 128k;

#HTTP请求的BODY 最大限制,若超出此值,报413 Request Entity Too Lager

 

   client_max_body_size 8m;  

#缓冲去代理用户请求的最大字节数,可以理解为先保存本地,然后在传给用户

client_body_buffer_size 32k;

   #不允许客户端主动关闭连接,如果该项为设置在nginx的日志中可能出现499 错误

   proxy_ignore_client_abort on;

   #nginx 和后端服务器连接超时时间 发起握手等候响应时间

   proxy_connect_timeout 5;

  #连接成功后等候后端服务器响应时间,其实已经进入后端的排队等候处理

   proxy_read_timeout 60;

   #后端服务器数据回传时间,就是在规定的时间内后端服务器必须传完所有的数据

proxy_send_timeout 5;  

#代理请求缓存去,该缓存去间保存用户的头信息,以供nginx进行规则处理一般只要保能保存下头信息即可

proxy_buffer_size 32k;

#告诉nginx保存单个用的几个buffer 最大用多少空间

proxy_buffers  4 64k;

#高负载下缓冲大小(proxy_buffers*2)

    proxy_busy_buffers_size 128k;

#设置缓存文件夹大小,如果大于该值,将从upstream 服务器传递请求,而不缓冲到磁盘上

    proxy_temp_file_write_size 1024m;     

   #shutdown error display nginx version

     关闭错误时的nginx 的版本显示

    server_tokens off;                                                    

   #open os function sendfile

    打开高效的文件传输模式

sendfile        on;

 #tcp_nopush     on;

    tcp_nopush     on; # 打开linux TCP_CORK,只有sendfile 打开时,该项才有效,用来发送系统HTTP response headers 设置选项的目的是告诉TCP协议不要仅仅为清空发送的缓存而发送报文段。通常三个设置TCPNOPUSH 插口选项。当请求长度超过报文段最大长度时,协议就好可能发出满长度的报文段,这样可以减少报文段的数量,减少的程度取决于每次发送的数量

    keepalive_timeout  60;

    tcp_nodelay on; #打开TCP_NODELAY 在包含了keepalived 才有效,上面的四项有效的提高了文件传输性能,用sendfile() 函数来转移大量的数据,协议会需要预先解决数据包包头部分,正常情况下包头很小,而且套接字上设置了TCP_NODELAY 。有包头的包将被立即传输,在一些情况下,因为包成功的被对方收到后需要请求对方确认,这样,大量的数据传输就会被延迟而且产生大量不必要的网络流量交换,但是在socket上是指了TCP_CORK ,就像个管道塞住塞子把带有包头的包填满数据,所有的数据根据大小进行填充,自动通过数据包发送出去,但是在数据传送完成是,需要把塞子打开    

   #开启gzip 的设置

#gzip  on;

gzip  on;

#设置允许压缩的页面的最小字节数,页面字节数从Header 头中的Content-Length中获取建议设置成大于1k的字节数,小于1k可能越压越大

    gzip_min_length 1k;

    #设置以16k为单位4倍申请内存做压缩结果缓存,默认值是申请跟原始数据相同大小的内存空间存储gzip压缩结果

gzip_buffers 4 16k;

#默认1.1 ,大部分浏览器支持gzip 压缩

gzip_http_version 1.1;

#设置压缩级别 压缩比率1-9,压缩比率越大,越消耗系统资源

 gzip_comp_level 2;

#设置压缩列席

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

#设置前端的缓存服务,如squid缓存经过nginx压缩的数据,该选项在做反向代理是设定压缩,后面参数为验证的header头信息,在做相应的压缩处理,

    gzip_vary on;   

   #proxy_cache 

  该处设置的是缓存的目录及其设置的大小

    proxy_cache_path  /usr/local/nginx/proxy_temp levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;

   #设置负载池

   upstream backend_server {

server 192.168.2.194:80 ;

 weight设置的权重  max_fails 设置的是健康监测失败次数,timeout 设置超时时间 当然此处主要是设置nginx的反向代理及其缓存,对于nginx 的负载均衡,在以后的文章中再详细介绍

# server 192.168.2.107:80 weight=1 max_fails=2 fail_timeout=30s;

     

server {

    #:监听的端口号

        listen       80;

        #server_name  localhost;

         #设置监听的主机名

          server_name freehat.blog.51cto.com;

           if ($host !~ 'freehat.blog.51cto.com') {

             return 403;

          }

 

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

        }      

         #设置扩展名以gif  .jpg .css 等结尾的静态文件缓存

       location ~.*\.(gif|jpg|jpeg|png|bmp|sqf|js|css)$

         {   

             #设置防盗链

           valid_referers none blocked freehat.blog.51cto.com;

           if ($invalid_referer) {

            return 404 

             #如果后端的服务器返回502 504 执行超时等错误,自动将请求转发到upstream 负责均衡池中的另外一台服务器,实现故障转移

             proxy_next_upstream http_502 http_504 error timeout invalid_header;

             #进行缓存,使用web缓存去cache_one

             proxy_cache cache_one;

            #以域名,URI,参数组合成web缓存的Key值,Nginx根据Key值哈希,储存缓存内容到二级缓存目录内

            #对不同的HTTP 状态码设置不同的缓存时间

             proxy_cache_valid 200 304 12h;

             proxy_cache_valid any 1m;

             proxy_set_header Host $host;

             proxy_set_header X-Real-IP $remote_addr;

             #设定proxy_set_header  Accept-Encoding 或者是后台服务器关闭gzip,该台机器才不会缓存被压缩的文件,造成乱码

             proxy_set_header Accept-Encoding "none";

            # proxy_set_header Accept-Encoding ""; 同上面一项相同

             #设置proxy_cache 支持后台设定的expires  即使支持HTTP头信息定义的缓存规则

             proxy_ignore_headers "Cache-Control" "Expires";

             if ( !-e  $request_filename )

                {

                proxy_pass  http://backend_server;

                 }注: 该项是如果client 请求的文件在cache 中保存,nginx 直接从cache中把对应的文件返还给client ,不会在去后端的Server 去取对应的文件

             expires 1h;  设置过去的时间

             }     

#set don't  php jsp cgi in cache  设置php jsp cgi 不保存在cache

  location ~.*\.(php|jsp|cgi)?$

   {

     proxy_set_header Host $host;

     proxy_set_header X-Forwarded-For $remote_addr;

     proxy_pass http://backend_server;

    }

#set js and css cache  expire time 设置js|css 在浏览器中过期的时间

       location ~ .*\.(js|css)

            {

                expires  1h;

             }

#clean all cache  设置清除所有的cache

 location ~/purge(/.*)

       {

       allow   127.0.0.1;

       allow  192.168.2.0/24;

       deny    all;

       proxy_cache_purge cache_one $host$1$is_args$args;

      }

    }

}

 

第五,启动机及其关闭nginx的命令

  1 启动之前检查nginx的主配置文件是否有错误

     # /usr/local/nginx/sbin/nginx  -t

  2  启动nginx的方式

      # /usr/local/nginx/sbin/nginx  -c  /usr/local/nginx/conf/nginx.conf 

  3 关闭nginx 的方式

      # /usr/loc

分享到:
评论

相关推荐

    Windows平台,Nginx配置文件修改自动加载重启

    本教程将介绍一种方法,使得在Windows环境下,Nginx配置文件修改后能够自动加载并重启,以实现配置的即时生效。 首先,`nginx.conf`是Nginx的主要配置文件,它包含了服务器的各项设置,如监听端口、服务器块、反向...

    notepad++编辑nginx配置文件支持高亮

    在标题“notepad++编辑nginx配置文件支持高亮”中,我们关注的是如何在Notepad++中实现对Nginx配置文件的语法高亮显示,这将极大提升开发者的阅读和编写效率。 Nginx是一款高性能的HTTP和反向代理服务器,其配置...

    nginx配置文件参考

    nginx配置 nginx配置文件参考 nginx配置文件参考

    Nginx 配置文件 nginx.conf 详解

    Nginx 配置文件 nginx.conf 详解 Nginx 配置文件 nginx.conf 是 Nginx 服务器的核心配置文件,它控制着 Nginx 服务器的行为和性能。在这个配置文件中,我们可以设置服务器的用户和组、工作进程数、错误日志、进程...

    Nginx 配置文件

    Nginx 配置文件

    nginx配置文件-安装客户端ip进行转发

    在本场景中,我们要探讨的是如何通过Nginx配置文件实现客户端IP的转发功能,这对于网站访问日志分析、安全策略实施以及负载均衡等都有着重要的作用。我们将主要分析两个配置文件:`nginx.conf`和`default.vhosts....

    apache配置文件转换到nginx配置文件的工具

    一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的... 该工具从Apache Web服务器中的各模块功能的角度进行分析,生成Nginx中相应模块的配置方式,然后以报告的形式生成转换后的Nginx配置文件。

    Nginx配置文件详细说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/...

    解析nginx配置文件nginx-java-parser.zip

    解析nginx配置文件,并将nginx配置文件格式化成对象,方便java程序管理nginx配置。解析配置文件并非使用正则匹配,而是使用语法分析树处理解决的。 标签:nginx

    Nginx配置文件原始版本

    Nginx配置文件原始版本,这是刚下来的Nginx服务器最原始的版本内容,下载覆盖即可。

    Nginx配置文件(nginx.conf)配置详解[定义].pdf

    Nginx配置文件(nginx.conf)配置详解 Nginx配置文件(nginx.conf)是Nginx服务器的核心配置文件,用于定义Nginx服务器的行为和配置。下面是Nginx配置文件的详细配置解释: 用户和组 Nginx配置文件中指定了用户和组,...

    Nginx配置文件说明.

    Nginx的配置文件通常位于/etc/nginx/nginx.conf或/usr/local/nginx/conf/nginx.conf,根据不同的系统和安装路径可能会有所差异。 在Nginx的配置文件中,主要有以下几个部分: 1. **全局块**:这部分设置影响Nginx...

    Nginx配置文件详解

    ### Nginx配置文件详解 #### 一、引言 Nginx是一款广泛使用的高性能Web服务器及反向代理服务器,以其高效稳定而著称。它不仅适用于简单的静态页面服务,还可以作为动态应用服务器的反向代理,实现负载均衡等功能。...

    nginx配置文件.zip

    在本例中,Nginx配置文件可能是为了在Docker容器内优化网络服务性能和资源利用率。 4. **配置文件详解**:Nginx的配置文件通常以`.conf`为扩展名,包含一系列指令和块。`http`、`server`和`location`是最基本的配置...

    apache到nginx配置文件转换工具

    一个开源的Linux下运行... 该工具从Apache Web服务器中的各模块功能的角度进行分析,生成Nginx中相应模块的配置方式,然后以报告的形式生成转换后的Nginx配置文件。 官网:https://github.com/leeleander/apache2nginx

    Vue项目部署Nginx配置文件 SSL

    在部署 Vue 项目时,Nginx 配置文件 `nginx.conf` 的关键设置如下: 1. **基本配置**: - `server` 块:定义一个监听特定端口(通常是80)的服务器实例。 ```nginx server { listen 80; server_name your...

    Nginx文件上传模块配置

    总结来说,配置Nginx的文件上传功能涉及下载和编译第三方模块,修改Nginx配置文件以处理上传请求和进度查询,最后通过客户端与服务器的交互实现文件的上传和进度反馈。这个过程需要理解Nginx的工作原理以及如何与...

    一个完整的nginx配置文件范例参考(含负载均衡)

    首先,配置文件的开头定义了 Nginx 运行的基本参数。`user nobody nobody;` 设置了 Nginx 的运行用户为 nobody,这意味着 Nginx 服务将以低权限用户身份运行,增加了系统安全性。`worker_processes 2;` 设定了 Nginx...

    nginx配置文件详解.docx

    Nginx 配置文件详解 Nginx 配置文件是 Nginx 服务器的核心组件之一,负责控制 Nginx 服务器的行为和性能。本文将详细解释 Nginx 配置文件的结构和各个组件的作用。 全局配置 Nginx 配置文件的第一部分是全局配置...

Global site tag (gtag.js) - Google Analytics