理解nginx的配置

Nginx配置文件主要分成四部分:main(全局设置)server(主机设置)upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)location(URL匹配特定位置后的设置),每部分包含若干个指令。

main部分设置的指令将影响其它所有部分的设置;server部分的指令主要用于指定虚拟主机域名、IP和端口;upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;location部分用于匹配网页位置(比如,根目录"/","/images",等等)。

他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。

可以有多个server,location属于server子集。

一个完整的nginx.conf


user  www www;
worker_processes  1; # worker角色的工作进程个数,简单可设置CPU核数

error_log  /www/log/nginx/error.log crit;
pid        /www/server/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;

events
{
  use epoll;
  worker_connections 65535;
}

# http设置
http {
    include       mime.types;
    default_type  application/octet-stream;

    autoindex on;  #自动显示目录
    autoindex_exact_size off; #人性化方式显示文件大小否则以byte显示
    autoindex_localtime on; #按服务器时间显示,否则以gmt时间显示

    # log格式设置
    # log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;

    sendfile on; # 开启高效文件传输模式;下载服务器设置为off

    tcp_nopush on; # 默认值即可
    tcp_nodelay on; # 默认值即可

    keepalive_timeout 60; # 长连接超时时间,单位是秒
    send_timeout 20; # 指定响应客户端的超时时间

    client_max_body_size 10m;# 允许客户端请求的最大单文件字节数
    client_body_buffer_size 128k; # 缓冲区代理缓冲用户端请求的最大字节数

    # 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;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    # Nginx带宽限制
    #limit_zone  crawler  $binary_remote_addr  10m;

    # http_proxy设置,按需设置
    proxy_connect_timeout   75; # 代理连接超时
    proxy_send_timeout   75; # 代理发送超时
    proxy_read_timeout   75; # 代理接收超时
    proxy_buffer_size   4k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size   64k;
    proxy_temp_file_write_size  64k;
    proxy_temp_path   /www/server/nginx/proxy_temp 1 2;

    #利用proxy_cache来缓存文件
    #levels设置目录层次
    #keys_zone设置缓存名字和共享内存大小
    #inactive在指定时间内没人访问则被删除在这里是1天
    #max_size最大缓存空间
    proxy_cache_path /www/server/nginx/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;
    #等号中间要加的,关键只要加上proxy_cache_path  

    # 设定负载均衡后台服务器列表,按需设置,一般不需要
    upstream  backend  {
      #ip_hash;
      server   192.168.10.100:8080 max_fails=2 fail_timeout=30s ;
      server   192.168.10.101:8080 max_fails=2 fail_timeout=30s ;
    }

    # 虚拟主机配置,server 指令开始
    include /www/server/nginx/conf/vhosts/*.conf;
}

完整的vhost的配置文件:
/www/server/nginx/conf/vhosts/me.52fhy.com.conf

#虚拟主机配置
server {
    listen       80;
    server_name  me.52fhy.com;
    index index.php index.html index.htm;
    root /52fhy.com/wordpress/;

    # WordPress Rewrite
    location / {
        if (-f $request_filename/index.html){
            rewrite (.*) $1/index.html break;
        }
        if (-f $request_filename/index.php){
            rewrite (.*) $1/index.php;
        }
        if (!-f $request_filename){
            rewrite (.*) /index.php;
        }
    }

    # 解析php|php5后缀
    location ~ .*\.(php|php5)?$
    {
        #fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

    # 设置gif|jpg|jpeg|png|bmp|swf文件缓存时间
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires 30d; # 缓存30天
    }

    # 设置js|css文件缓存时间
    location ~ .*\.(js|css)?$
    {
        expires 1h; # 缓存1小时
    }

    # 访问日志
    access_log  /www/log/me.52fhy.com.log;
}
时间: 2024-10-30 06:26:54

理解nginx的配置的相关文章

《深入理解Nginx》阅读与实践(一) Nginx安装配置与HelloWorld

最近在读陶辉的<深入理解Nginx:模块开发与架构解析>,一是想跟着大牛练练阅读和编写开源代码的能力,二是想学学Nginx优秀的架构设计,三是想找一个点深入下Linux下网络编程的细节.侯捷在他的<STL源码剖析>的自序里说过,"追踪一流作品并于其中吸取养分,远比自己关起门来写个三流作品,价值高得多".我个人比较喜欢<深入理解Nginx>这本书,它讲解的很全面,相关的知识都会有所介绍,整体的脉络比较明晰.只是涉及东西比较多,有时真希望纸质文档也能像在

《深入理解Nginx:模块开发与架构解析》一2.4 用HTTP核心模块配置一个静态Web服务器

2.4 用HTTP核心模块配置一个静态Web服务器 静态Web服务器的主要功能由ngx_http_core_module模块(HTTP框架的主要成员)实现,当然,一个完整的静态Web服务器还有许多功能是由其他的HTTP模块实现的.本节主要讨论如何配置一个包含基本功能的静态Web服务器,文中会完整地说明ngx_http_core_module模块提供的配置项及变量的用法,但不会过多说明其他HTTP模块的配置项.在阅读完本节内容后,读者应当可以通过简单的查询相关模块(如ngx_http_gzip_f

《深入理解Nginx:模块开发与架构解析》一第2章 Nginx的配置2.1 运行中的Nginx进程间的关系

第2章 Nginx的配置 Nginx拥有大量官方发布的模块和第三方模块,这些已有的模块可以帮助我们实现Web服务器上很多的功能.使用这些模块时,仅仅需要增加.修改一些配置项即可.因此,本章的目的是熟悉Nginx的配置文件,包括配置文件的语法格式.运行所有Nginx服务必须具备的基础配置以及使用HTTP核心模块配置静态Web服务器的方法,最后还会介绍反向代理服务器. 通过本章的学习,读者可以:熟练地配置一个静态Web服务器:对影响Web服务器性能的各个配置项有深入的理解:对配置语法有全面的了解.通

《深入理解Nginx:模块开发与架构解析》一2.3 Nginx服务的基本配置

2.3 Nginx服务的基本配置 Nginx在运行时,至少必须加载几个核心模块和一个事件类模块.这些模块运行时所支持的配置项称为基本配置-所有其他模块执行时都依赖的配置项. 下面详述基本配置项的用法.由于配置项较多,所以把它们按照用户使用时的预期功能分成了以下4类: 用于调试.定位问题的配置项. 正常运行的必备配置项. 优化性能的配置项. 事件类配置项(有些事件类配置项归纳到优化性能类,这是因为它们虽然也属于events {}块,但作用是优化性能). 有这么一些配置项,即使没有显式地进行配置,它

nginx技术(2)nginx的配置详解

nginx的配置 1,启动nginx [root@centos6 nginx-1.2.9]# /usr/sbin/nginx -c /etc/nginx/nginx.conf 启动nginx [root@centos6 nginx-1.2.9]# ps -ef|grep nginx 查看进程 root 5479 1 0 04:15 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 548

《深入理解Nginx》阅读与实践(三)

使用upstream和subrequest访问第三方服务 一.upstream:以向nginx服务器的请求转化为向google服务器的搜索请求为例(一)模块框架 首先要明确的是,这里是编写一个使用upstream的模块,而不是编写upstream模块.因此,和HelloWorld类似,模块结构体ngx_http_mytest_module.模块上下文结构体ngx_http_mytest_module_ctx.数组ngx_http_mytest_command[].方法ngx_http_mytes

《深入理解Nginx》阅读与实践(二) 配置项的使用

HelloWorld的完成意味着已经踏入了nginx的大门,虽然很振奋人心,但在编写中仍有很多疑惑的存在:nginx.conf的配置项中各个参数是如何读入程序中的?ngx_command_t如何完成配置项的读入工作?名称相同的配置项的冲突如何解决?HelloWorld中的ngx_http_module_t何以称为模块的上下文?同时我在读第4章"配置项的使用"时又有成见:不就是各种琐碎的参数设置嘛,有什么好读的?(这个成见来自于UNP中某一章节套接字选项)不过经过仔细阅读并实践这部分内容

Nginx安装配置PHP(FastCGI)环境的教程

这篇是Nginx安装配置PHP(FastCGI)环境的教程.Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用. 一.什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP server和动态脚本语言间通信的接口.多数流行的HTTP server都支持FastCGI,包括Apache.Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP. FastCGI是从CGI发展改进而来的.传统CG

《高性能Linux服务器构建实战》——1.5节Nginx常用配置实例

1.5 Nginx常用配置实例Nginx作为一个HTTP服务器,在功能实现方面和性能方面都表现得非常卓越,完全可以与Apache相媲美,几乎可以实现Apache的所有功能.下面就介绍一些Nginx常用的配置实例,具体包含虚拟主机配置.负载均衡配置.防盗链配置以及日志管理等. 1.5.1 虚拟主机配置实例下面在Nginx中创建3个虚拟主机,需要说明的是,这里仅仅列出了虚拟主机的配置部分. http { server { listen 80; server_name www.domain1.com;