• 3-nginx.conf参数配置


    –#定义Nginx运行的用户和用户组
    –user www www;
    –#nginx进程数,建议设置为等于CPU总核心数。
    –worker_processes8;
    –#全局错误日志定义类型,[ debug | info | notice | warn | error | crit]
    –error_log/var/log/nginx/error.log info;
    –#进程文件
    –pid/var/run/nginx.pid;
    –#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit-n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit-n的值保持一致。
    –worker_rlimit_nofile65535;
    
    #工作模式与连接数上限
    events
    {
    #参考事件模型,use [ kqueue| rtsig| epoll| /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
    use epoll;
    #单个进程最大连接数(最大连接数=连接数*进程数)
    worker_connections  65535;
    }
    
    
    event下的一些配置及其意义
    –#单个后台worker process进程的最大并发链接数
    –worker_connections1024;
    –# 并发总数是worker_processes和worker_connections的乘积
    –# 即max_clients= worker_processes* worker_connections
    –# 在设置了反向代理的情况下,max_clients= worker_processes* worker_connections/ 4 为什么
    –# 为什么上面反向代理要除以4,应该说是一个经验值
    –# 根据以上条件,正常情况下的NginxServer可以应付的最大连接数为:4 * 8000 = 32000
    –# worker_connections值的设置跟物理内存大小有关
    –# 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数
    –# 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
    –# 我们来看看360M内存的VPS可以打开的文件句柄数是多少:
    –# $ cat /proc/sys/fs/file-max
    –# 输出34336
    –# 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
    –# 所以,worker_connections的值需根据worker_processes进程数目和系统可以打开的最大文件总数进行适当地进行设置
    –# 使得并发总数小于操作系统可以打开的最大文件数目
    –# 其实质也就是根据主机的物理CPU和内存进行配置
    –# 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
    –# ulimit-SHn65535
    
    http下的一些配置及其意义
    –#设定http服务器
    –http
    –{
    –include mime.types; #文件扩展名与文件类型映射表
    –default_type  application/octet-stream; #默认文件类型
    –#charset utf-8; #默认编码
    –server_names_hash_bucket_size128; #服务器名字的hash表大小
    –client_header_buffer_size32k; #上传文件大小限制
    –large_client_header_buffers4 64k; #设定请求缓
    –client_max_body_size8m; #设定请求缓
    –sendfileon; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
    –autoindexon; #开启目录列表访问,合适下载服务器,默认关闭。
    –tcp_nopushon; #防止网络阻塞
    –tcp_nodelayon; #防止网络阻塞
    –keepalive_timeout120; #长连接超时时间,单位是秒
    
    gzip的一些配置及其意义
    –#gzip模块设置gzipon; #开启gzip压缩输出gzip_min_length1k; #最小压缩文件大小gzip_buffers4 16k; #压缩缓冲区gzip_http_version1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)gzip_comp_level2; #压缩等级gzip_typestext/plain application/x-javascripttext/cssapplication/xml;#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。gzip_varyon;#limit_zonecrawler $binary_remote_addr10m; #开启限制IP连接数的时候需要使用
    
    
    虚拟主机一些配置及其意义
    –#虚拟主机的配置server{#监听端口listen 80;#域名可以有多个,用空格隔开server_namewww.ha97.com ha97.com;index index.html index.htm index.jsp;root /data/www/ha97;location ~ .*.(php|php5)?${fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.jsp;include fastcgi.conf;}

    上面是配置的具体参数的含义, 下面详细讲解

    1, 虚拟主机

    server {
      server_name: 
    location
    / {
    } }

     虚拟主机, 可以将网络上的一个计算机分为多个虚拟主机, 并分别独立提供服务

    和tomcat的区别是: tomcat配置多个工程统一服务, 而虚拟主机可以单独服务

    2, 配置虚拟主机的方式

    1), 基于ip进行虚拟

    通过linux的虚拟ip绑定实现

    #绑定虚拟ip
    ifconfig eth0:1 192.168.208.201 netmask 255.255.255.0
    #删除虚拟ip
    ifconfig eth0:1 down

    然后在./conf/nginx.conf中配置

    # 虚拟主机1
        server {
            listen       80;
            server_name 192.168.208.101;
    
            location / {
              
                root   html;      # 根路径
                index  index.html index.htm;
            }
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    
    # 虚拟主机2
        server {
            listen       80;
            server_name  192.168.208.201;
    
            location / {
                root   /usr/opt/nginx;
                index  index.html index.htm;
            }
           #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
            }
        }

    2), 基于端口进行虚拟: 

    很简单, 改虚拟端口即可,

      servet_name相同,

      listener配置 IP:端口

    3), 基于域名进行虚拟

    # 虚拟主机1
        server {
            listen       80;
            server_name  wenbronk.nginx-01.com nginx-01.com;
    
            location / {
               root   html;
                index  index.html index.htm;
            }
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    
    # 虚拟主机2
        server {
            listen       80;
            server_name  www.nginx-01.com;
    
            location / {
                root   /usr/opt/nginx;
                index  index.html index.htm;
            }
           #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
            }
        }

    3, location的映射规则: 

    - location [ = | ~ | ~* | ^~ ] uri{ ... }
    = : 精确匹配
    ^~ :
    ~* : 匹配正则
    –location URI {}:   对当前路径及子路径下的所有对象都生效; –location
    = URI {}: 注意URL最好为具体路径。   精确匹配指定的路径,不包括子路径,因此,只对当前资源生效; –location ~ URI {}: –location ~* URI {}:   模式匹配URI,此处的URI可使用正则表达式,~区分字符大小写,~*不区分字符大小写;
      
    匹配到为止, 后面不匹配了
    –location ^~ URI {}: 
      不使用正则表达式 –优先级:
    = > ^~ > ~|~* > /|/dir/

    4, 用户ip限制: (access模块)

    在nginx.conf的server下的location中进行配置

    # 虚拟主机1
        server {
            listen       80;
            server_name  wenbronk.nginx-01.com nginx-01.com;
    
            location / {
                # 配置允许规则, 执行第一条被匹配的, 所有匹配不到就禁止
                deny 192.168.208.1;  # 禁止
                allow 192.168.0.0/16;  # 允许
                deny all;
                root   html;
                index  index.html index.htm;
            }
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }

    注意: 本人在vm中安装的虚拟机, 屏蔽物理机访问linux, 需要deny的是vm的网关ip,而不是物理机的ip, 可通过查看nginx的日志来获取: 

        tail -f /var/log/nginx/access.log

    关于ip网段的配置规则可看: http://blog.csdn.net/senlin1202/article/details/50974115

    5, 用户访问控制: 

    需要使用httpd模块, 使用apache发行包的htpasswd命令来创建配置文件(使用crypt() 进行加密)

    yum -y install httpd

    创建用户名和密码的方式为

    htpasswd -b -c -m /usr/nginx-passwd wenbronk 123
    -b: 直接输入密码
    -c: 创建文件
    -m MD5加密

    然后在nginx.conf中进行配置

    # 虚拟主机1
        server {
            listen       80;
            server_name  wenbronk.nginx-01.com nginx-01.com;
    
            location / {
                # 配置允许规则
                allow 192.168.1.0/24;
                allow 192.168.0.0/16;
                deny all;
    
                # 配置用户访问规则
                auth_basic    "off"      "提示信息, 没有字符串直接加off就是关闭";
                auth_basic_user_file /usr/nginx-passwd;    # 制定上一步创建的加密文件
    
                root   html;
                index  index.html index.htm;
            }
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }

    密码使用crypt() 加密, 直接使用httpd的htpasswd加密即可

    相对路径没搞明白, 配置了两次没对, 有谁搞懂了可以告诉我一声, 谢谢: wenbronk@163.com

    6, nginx访问状态监控: 

    #没测试, 使用tengine的功能全些
    –location /basic_status{
    –stub_statuson;
    –}

     

  • 相关阅读:
    MySQL简介
    MySQL表及索引相关知识
    关系型和非关系型数据库
    IntelliSense: #error 指令: Please use the /MD switch for _AFXDLL builds————c++编程问题
    msvcrt是做什么的
    COLORREF的结构和用法
    虚函数这么用,只要有一个基类的指针就行了
    映射的磁盘(网络驱动器)无法显示svn图标
    as3 textfield 旋转文字有锯齿的问题
    cocos2dx中CCFileUtils::sharedFileUtils()>getFileData的内存释放问题
  • 原文地址:https://www.cnblogs.com/wenbronk/p/6574942.html
Copyright © 2020-2023  润新知