热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nginx服务器配置文件的详细过程

#使用的用户和组userwwwwww;#指定工作衍生进程数(一般等于CPU的总核数或者总核数的两倍),每个进程耗费10MB-12MB内存worker_processes8;#指定错误日志存放的路径,错误日志记录级别可选项为:[debug|info|noticd|warn|error|crit]error_l

#使用的用户和组

user www www;

#指定工作衍生进程数(一般等于CPU的总核数或者总核数的两倍),每个进程耗费10MB-12MB内存

worker_processes 8;

#指定错误日志存放的路径,错误日志记录级别可选项为:[debug | info | noticd | warn | error | crit]

error_log  logs/error.log;

#指定错误日志级别

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#指定pid存放的路径,文件内记录当前nginx主进程的ID,kill -HUP 'logs/nginx.pid'

#pid        logs/nginx.pid;

 

#指定文件描述符数量

worker_rlimit_nofile 51200;

 

#工作模式及连接数上限

events {

    #提高linux的io操作选项,Linux系统推荐采用epoll模型,FreeBSD系统推荐采用kequeue,linux下建议开启

   use epoll;

   #允许最大连接数

   worker_connections      51200;

}

 

http {

    #mimie.types 浏览器请求的文件媒体类型

    include       mime.types;

    #用来告诉浏览器请求的文件媒体类型

    default_type  application/octet-stream;

    #设置使用的字符集,如果一个网站有多种字符集,请不要随便设置,应该让程序员在HTML代码中通过Meta标签设置

    #charset gb2312;

    

    #日志记录格式

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    

    #日志名称,和日志记录格式采用main

    #access_log  logs/access.log  main;

    

    server_names_hash_bucket_size 128;

    #用于设置客户端请求的Header头缓冲区大小,大部分情况1KB大小足够。不能超过large_client_header_buffers缓冲区大小的设置

    client_header_buffer_size 32k;

    #该指令用于设置客户端请求的Header头缓冲区大小,默认值为4KB。

    large_client_header_buffers 4 32k;

    

    #设置客户端能够上传的文件大小,默认为1m

    client_max_body_size 8m;

    

    sendfile on;

    #该指令允许或禁止使用FreeBSD上的TCP_NOPUSH,或者Linux上的TCP_CORK套接字选项。

    #tcp_nopush on;

    

    

    #keepalive_timeout  0该指令可以使客户端到服务器端的连接持续有效

    keepalive_timeout 60;

    #该指令允许或禁止使用套接字选项TCP_NODELAY,仅适用于keep-alive连接

    tcp_nodelay on;

    

    

    fastcgi_connect_timeout 300;

    fastcgi_send_timeout 300;

    #该指令用于设置upstream模块等待FastCGI进程发送数据的超时时间,默认值为60s;

    fastcgi_read_timeout 200;

    #该指令设置FastCGI服务器相应头部的缓冲区大小。通常情况,该缓冲区大小设置等于fastcgi_buffers指令设置的一个缓冲区的大小。

    fastcgi_buffer_size 64k;

    #该指令设置了读取FastCGI进程返回信息的缓冲区数量和大小。

    fastcgi_buffers 4 64k;

    

    fastcgi_busy_buffers_size 128k;

    fastcgi_temp_file_writer_size 128k;

    

    #开启gzip压缩,对网页文件、css、js、xml等启动gzip压缩,减少数据传输量,提高访问速度。

    gzip on;

    #该指令允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。

    gzip_min_length 1k;

    #设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。下面的设置代表16k为单位,按照原始数据大小以16k为单位的4倍申请内存。

    gzip_buffers 4 16k;

    #识别http的协议版本。

    gzip_http_version 1.1;

    #gzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理速度最慢(传输快但比较消耗cpu)

    gzip_comp_level 2;

    #匹配mime类型进行压缩,无论是否指定,“text/html”类型总是会被压缩的。

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

    gzip_vary on;

    #该指令定义了一个数据区,其中记录会话状态信息。  定义一个叫“crawler”的记录去,总容量为10MB,以变量$binary_remote_addr作为会话的判断基准(即一个地址一个会话)

    #limit_zone crawler $binary_remote_addr 10m;

    

    #允许客户端请求的最大单个文件字节数

    client_max_body_size 300m;

    

    #缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户

    client_body_buffer_size 128k;

    

    #跟后端服务器连接的超时时间_发起握手等候响应超时时间

    proxy_connect_timeout 600;

    

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

    proxy_read_timeout 600;

    

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

    proxy_send_timeout 600;

    

    #代理请求缓存区_这个缓存区会保存用户的头信息以供Nginx进行规则处理_一般只要能保存下头信息即可

    proxy_buffers 16k;

    

    #同上 告诉Nginx保存单个用的几个Buffer最大用多大空间

    proxy_buffers 4 32k;

    

    #如果系统很忙的时候可以申请更大的proxy_buffers 官方推荐*2

    proxy_busy_buffers_size 64k;

    

    #proxy缓存临时文件的大小

    proxy_temp_file_write_size 64k;

    

    #缓存    proxy_temp_path和proxy_cache_path必须在同一个分区

    proxy_temp_path /data2/proxy_temp_path;

    #该指令用于设置缓存文件的存放路径,设置缓存区名称为cache_one ,内存缓存空间大小为200M,自动清除超过1天没有被访问的缓存数据,硬盘缓存空间大小为30GB

    proxy_cache_path /data2/proxy_cache_path levels=1:2 keys_zOne=cache_one:2000m inactive=1d max_size=30g;

    

    

    #include指令,使用此指令,可以包含任何你想要包含的配置文件,支持文件名匹配。

    #include vhosts/*.conf;

    

    upstream php_server_pool{

        #weight=NUMBER ——设置服务器的权重,权重数高被分配访问数越高,默认权重1.

        #max_fails=NUMBER——在参数fail_timeout指定的时间内对后端服务器请求失败的次数,如果检测到后端服务器无法连接及发生服务器错误(404错误除外),则标记为失败。默认值为1.设置为0这关闭这项检查

        #fail_timeout=TIME——在经历参数max_fails设置的失败次数后,暂停的时间

        #down——标记服务器为永久离线状态,用于ip_hash指令

        #backup——仅仅在非backup服务器全部繁忙的时候才启动

        

        #upstream模块拥有以下变量:

        #    $upstream_addr:处理请求的upstream服务器地址

        #    $upstream_status:upstream服务器的应答状态

        #    $upstream_response_time:Upstream服务器响应时间(毫秒),多个响应以逗号和冒号分隔。

        #    $upstream_http_$HEADER:任意的HTTP协议头信息,例如:$upstream_http_host

        

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

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

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

    }

    

    upstream message_server_pool{

        #ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器。但无法保证后端服务器的负载均衡,所以建议后端服务器能做到session共享来代替nginx的ip_hash方式。

        #且如果后端服务器有时要从Nginx负载均衡中摘除一段时间,你必须将其标记为“down”

        #ip_hash;

        server 192.168.1.13:3245;

        server 192.168.1.14:3245 down;

    }

    

    upstream bbs_server_pool{

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

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

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

    }

    

    #第一个虚拟主机,反向代理php_server_pool这组服务器

    server

    {

        #该指令用于设置虚拟主机监听的服务器地址和端口号。

        #listen127.0.0.1:8080;

        #listen 8000;

        #listen *:8000;

        #listen localhost:8000;

        listen 80;

        server_name www.yourdomain.com;

        

        #SSL加密浏览

        ssl on

        ssl_certificate www.yourdomain.com.crt;

        ssl_certificate_key www.yourdomain.com.key;

        

        location /

        {

            #限制下载速度256KB/秒

            limit_rate 256k;

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

            proxy_next_upstream http_502  http_504 error timeout invalid_header;

            proxy_pass http://php_server_pool;

            proxy_set_header Host www.yourdomain.com;

            proxy_set_header X-Forwarded-For $remote_addr;

        }

        

        access_log /data1/logs/www.yourdomain.com_access.log;        

    }

    

    #第二个虚拟主机,反向代理php_server_pool这组服务器

    server

    {

        listen 80;

        server_name www1.yourdomain.com;

        

        #访问http://www1.yourdomain.com/message/***地址,反向代理message_server_pool这组服务器

        location /

        {

            proxy_pass http://message_server_pool;

            proxy_set_header Host $host;

        }

        

        #访问除了/message/之外的http://www1.yourdomain.com/***,反向代理php_server_pool这组服务器

        location /message/

        {

            #DNS解析服务器的IP地址,可以在IE 工具-Internet选项-连接-局域网设置-代理服务器 中设置代理服务器IP地址和端口

            resolver 8.8.8.8;

            #该指令用于设置被代理服务器端口或套接字,以及URI

            proxy_pass http://php_server_pool;

            #该指令可以设置哪些从后端服务器传送过来的文件被Nginx存储。on保持文件与alias或root指令设置的目录一致,参数off不存储文件

            #proxy_store /data/www$original_uri;

            proxy_store on;

            #该指令用于指定创建文件和目录的权限

            proxy_store_access user:rw group:rw all:r;

            #指定一个本地目录来缓冲较大的代理请求

            proxy_temp_path /data/temp;

            #该指令用于在URL和文件系统路径之间实现映射。

            alias /data/www;

            #该指令允许重新定义或添加Header行道转发给被代理服务器的请求信息中,它的值可以是文本,也可以是变量,或者是文本和变量的组合。

            #使用$host变量,它的值相当于服务器的主机名(如果使用域名访问,则该值为域名;如果使用IP访问,则该值为IP)。此外可以将主机名和被代理服务器的端口一起传递  $host:$proxy_port

            proxy_set_header Host $host;

            proxy_set_header X-Forwarded-For $remote_addr;

            

        }

        

        access_log /data1/logs/www.yourdomain.com_access.log;        

    }

    

    #第三个虚拟主机

    server

    {

        listen 80;

        server_name bbs.yourdomain.com *.bbs.yourdomain.com;

            

        location /

        {

            proxy_pass http://bbs_server_pool;

            proxy_set_header Host $host;

            proxy_set_header X-Forwarded-For $remote_addr;

            #禁止指定的IP地址或者IP段访问某些虚拟主机或目录

            #deny 192.168.1.1/24;

            #允许指定的IP地址或者IP段访问某些虚拟主机或目录

            #allow 192.168.1.0/24;

            

        }

        

        #不记录日志

        access_log off;        

    }                 

    

}


推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
author-avatar
淡泊宁静1110
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有