• Nginx配置详解


    本文介绍Nginx的配置文件信息,以及如何在虚拟站点中使用PHP。

    一、Nginx主配置文件及解析

    Nginx配置文件主要分为4部分:

             main(全局设置)部分设置的指令将影响其他所有设置;

             server(主机设置)部分的指令主要用于指定主机和端口;

             upstream(负载均衡服务器设置)部分指令主要用于负载均衡,设置一系列的后端服务器;

             location(URL匹配特定位置的设置)部分用于匹配网页位置。

     四者之间的关系:server继承main,location继承server,upstream既不会继承其他设置,也不会被继承。

          

    1.  # 指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。如果编译Nginx的时候指定了用户和用户组,该选项可以关闭
    2.  user  nobody;
    3.  # 指定Nginx需要开启的进程数,每个进程平均耗费10~12M内存。建议数量设置成与CPU内核的数量一致就可以了。
    4.  # cpu的核心数可以使用 cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l 或 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 命令进行查
    5.  worker_processes  1;
    6.  # 定义全局错误日志文件,后面可以设置输出级别:debug、info、notice、warn、error、crit
    7.  error_log  logs/error.log;
    8.  #error_log  logs/error.log  notice;
    9.  #error_log  logs/error.log  info;
    10.  # 用来指定进程id的存储文件位置
    11.  pid        logs/nginx.pid;
    12.  # 启用TCMalloc的设置,见上节相关的描述
    13.  google_perftools_profiles /tmp/tcmalloc;
    14.  # 用于绑定worker进程和CPU,该值必须和Linux内核打开文件数关联起来,如将该值设置为65535就必须在Linux命令行中执行 ulimit -HSn 65535
    15.  worker_rlimit_nofile 65535;
    16.  
    17.  events {
    18.      # 用来指定Nginx的工作模式,支持的模式有select、poll、kqueue、epool、rtsig和/dev/poll。其中select和poll都是标准的工作模式
    19.      # kqueue和epoll是高效的工作模式,前者用在linux平台上,后者用于BSD系统。
    20.      use epoll;
    21.      # 定义每个进程的最大连接数,默认是1024,该参数的最大连接数受Linux系统进程的最大打开文件数限制,必须使用 ulimit命令
    22.      # 另外,最大客户端连接数max_client=worker_processes*worker_connections,作为反向代理的话还需要除以4。
    23.      worker_connections  65535;
    24.  }
    25.  
    26.  http {
    27.      # 引用外部文件,类似于Apache中的include
    28.      include       mime.types;
    29.      # 当出现无法解析的文件时,提示用户下载
    30.      default_type  application/octet-stream;
    31.  
    32.      # 定义日志的格式,后面的main为格式的名称,可以在access_log指令中进行引用
    33.      #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    34.      #                  '$status $body_bytes_sent "$http_referer" '
    35.      #                  '"$http_user_agent" "$http_x_forwarded_for"';
    36.  
    37.      #access_log  logs/access.log  main;
    38.  
    39.      # 设定请求缓冲
    40.      server_names_hash_bucket_size 128;
    41.      client_header_buffer_size 32k;
    42.      large_client_header_buffers 432k;
    43.      # 设置客户端能够上传文件大小的限制
    44.      client_max_body_size 600m;
    45.  
    46.      # 是否开启高效文件传输模式,将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞
    47.      sendfile        on;
    48.      tcp_nopush     on;
    49.      tcp_nodelay  on;
    50.  
    51.      # 隐藏nginx的版本显示,增强安全性
    52.      server_tokens off;
    53.  
    54.      # 用于设置客户端连接保持活动的超时时间,单位为秒,默认为75s
    55.      #keepalive_timeout  0;
    56.      keepalive_timeout  65;
    57.      # 用于指定响应客户端的超时时间,这个超时仅限于两个连接活动之间的时间,默认为60s
    58.      #send_timeout 60;
    59.  
    60.      # 下面是FastCGI的优化指令
    61.      # 连接到后端FastCGI的超时时间
    62.      fastcgi_connect_timeout 300;
    63.      # 向FastCGI传送请求的超时时间
    64.      fastcgi_send_timeout 300;
    65.      # 接收FastCGI应答的超时时间
    66.      fastcgi_read_timeout 300;
    67.      # 指定读取FastCGI应答第一部分需要多大的缓冲区
    68.      fastcgi_buffer_size 64k;
    69.      fastcgi_buffers 464k;
    70.      # 默认值是fastcgi_buffers的两倍
    71.      fastcgi_busy_buffers_size 128k;
    72.      # 表示在写入缓存文件时使用多大的数据块,默认为fastcgi_buffers的两倍
    73.      fastcgi_temp_file_write_size 128k;
    74.      # 为FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间
    75.      #fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
    76.      # 开启FastCGI缓存并为其设定一个名称。开启缓存可以有效降低CPU的负载,并且防止502错误的发生。
    77.      # 但是同时也会引起很多问题,要视具体情况而定
    78.      #fastcgi_cache TEST;
    79.      # 用来指定应答代码的缓存时间,下面三条指令表示将200和303应答缓存1小时,301应答缓存1天,其他应答缓存1分钟。
    80.      #fastcgi_cache_valid 200 302 1h;
    81.      #fastcgi_cache_valid 301 1d;
    82.      #fastcgi_cache_valid any 1m;
    83.  
    84.      # 配置Nginx的HttpGzip模块,开通的前提是安装的时候启用了该模块,使用 /usr/local/nginx/sbin/nginx -V 来查看安装的信息(大写的V)
    85.      # 是否开通gzip
    86.      gzip  on;
    87.      # 允许压缩的页面最小字节数
    88.      gzip_min_length 1k;
    89.      gzip_buffers 416k;
    90.      gzip_http_version 1.1;
    91.      # 压缩比,从1到9,越大压缩率越高但越占资源,默认为1
    92.      gzip_comp_level 2;
    93.      # 指定压缩的类型,text/html总是被压缩
    94.      gzip_types text/plainapplication/x-javascripttext/cssapplication/xml;
    95.      # 是否让浏览器缓存压缩过的数据,默认为off
    96.      gzip_vary on;
    97.  
    98.      # server 用于对虚拟主机的设置,建议每个站点的设置放到外部配置文件中,然后使用include进行引用
    99.      # 这里设置一个默认的主机,当默认访问的时候返回403错误
    100.      server {
    101.          listen       80 default;
    102.          server_name _;
    103.          # 也可以修改成404或者500,根据自身情况进行设置
    104.          return 403;
    105.      }
    106.  
    107.      # 可以使用include将每个站点的配置引用进来,这样方便对站点进行管理
    108.      include vhosts/examples.com.conf;
    109.      include vhosts/abc.com.conf;
    110.  }

    二、Nginx设置虚拟主机及对PHP的支持
    在conf目录下面创建vhosts目录,并创建站点的配置文件,这里以examples.com.conf为例。

    1. [root@localhost ~]# cd /usr/local/nginx/
    2. [root@localhost nginx]# mkdir -p conf/vhosts
    3. [root@localhost nginx]# vim conf/vhosts/examples.com.conf

    创建的examples.com.conf配置文件如下:

    1.  # 虚拟主机以server进行定义
    2.  server {
    3.      # 监听的端口,多个端口之间使用空格进行间隔
    4.      listen       80;
    5.      # 用来定义访问的ip地址或者域名,多个域名之间使用空格分开
    6.      server_name  examples.com www.examples.com;
    7.      # 用于指定站点网页的默认编码格式
    8.      charset utf-8;
    9.  
    10.      # 用来指定此站点的访问日志存放路径,后面的main用于设定日志的格式
    11.      #access_log  logs/examples.com.access.log  main;
    12.  
    13.      # 用于指定站点的网页根目录,可以是相对路径(相对于nginx安装目录),也可以是绝对路径
    14.      #root /www/examples.com
    15.      # 用于指定访问的默认首页地址
    16.      #index index.html index.php
    17.  
    18.      # 用来指定站点默认访问的设置,里面的root和index用法和效果与上面是一样的
    19.      # 两种方式使用任何一种都是可以的,这里采用 location / {} 的方式
    20.      location / {
    21.          root   /www/examples.com;
    22.          index  index.html index.php;
    23.      }
    24.  
    25.      # 使用error_page指令设置各种错误信息的返回页面
    26.      # 错误信息的返回页面大小如果低于512k则会被ie浏览器替换为ie默认的错误页面
    27.      #error_page  404              /404.html;
    28.      error_page   500 502503504 /50x.html;
    29.      location = /50x.html {
    30.          root   html;
    31.      }
    32.  
    33.      # nginx的location指令用于设置url地址匹配,支持正则表达式匹配,也支持条件判断匹配。
    34.      # 可以通过location指令实现nginx对动态、静态网页的过滤处理。
    35.      # 下面是对所有的图片设置缓存30天
    36.      location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
    37.          expires 30d;
    38.      }
    39.      # 对js和css文件缓存1小时
    40.      location ~ .*.(js|css)$ {
    41.          expires 1h;
    42.      }
    43.  
    44.      # 下面是列出了两种解析php的方式:
    45.      # 第一种是简单的将所有以php结尾的请求都交给本机的8080端口进行处理
    46.      #location ~ .php$ {
    47.      #    proxy_pass   http://127.0.0.1:8080;
    48.      #}
    49.      # 第二种是将php的请求交给FastCGI进程监听的ip地址及端口,这里转发给PHP_FPM
    50.      location ~ .php$ {
    51.          # 设定用于解析php的根目录,通常为网站根目录
    52.          root          /www/examples.com;
    53.          # 地址和端口与php_fpm中设置的一致
    54.          fastcgi_pass   127.0.0.1:9000;
    55.          # 默认首页
    56.          fastcgi_index  index.php;
    57.          # 指定防止php动态程序的主目录,也就是$fastcgi_script_name前面指定的路径,建议与网站根目录一致或直接使用$document_root
    58.          fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    59.          include        fastcgi_params;
    60.      }
    61.  
    62.      # 防止直接访问 .htaccess 文件,建议开启
    63.      location ~ /.ht {
    64.          deny  all;
    65.      }
    66.  }
  • 相关阅读:
    State模式
    Visitor模式,Decorator模式,Extension Object模式
    系统报错undefine not symbol armv7
    decompressedResponseImageOfSize:completionHandler:]_block_invoke
    App Transport Security has blocked a cleartext HTTP
    UIButton 左对齐 省略号最右边
    ActiveAndroid问题no such table解决总结
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
    fun下载内容批量收集
    The `brew link` step did not complete successfully
  • 原文地址:https://www.cnblogs.com/hellohell/p/6207831.html
Copyright © 2020-2023  润新知