Nginx基础

作者: Www刘 | 来源:发表于2017-07-22 17:10 被阅读35次
Nginx(适合linux系统下)

1.基本结构

worker_process 4; events{ worker_connections 1024; }; http{ server{ } server{ } }

2.相关命令

查看nginx进程
tasklist /fi "imagename eq nginx.exe" 显示如下图:


nginx常用命令(一定要进入nginx的安装目录才能执行)

nginx -s stop 强制关闭
nginx -s quit 安全关闭
nginx -s reload 改变配置文件的时候,重启nginx工作进程,来时配置文件生效
nginx -s reopen 打开日志文件

3.配置详解

**设置 用户和用户组 **
user www www;//nobody低权限用户 安全

**nginx进程数,建议设置为等于CPU总核心数或者两倍 **
worker_process 4

**设置错误日志的存放文件,全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] **
error_log /usr/local/nginx/logs/error.log info;

**进程pid文件的存放路径(pid是控制系统的重要文件) **
pid /usr/local/nginx/logs/nginx.pid;

指定进程可以打开的最大描述符:数目
工作模式与连接数上限
这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。
这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。

worker_rlimit_nofile 65535;

**设置最大连接数 **
events{ worker_connections 1024; };

http指令处理http请求
# http {
# mime type映射
include mime.types;
default_type application/octet-stream;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

# server 表示一个虚拟主机,一台服务器可配置多个虚拟主机
server {
    # 监听端口
    listen       80;
    # 识别的域名
    server_name  localhost;

    # 一个关键设置,与url参数乱码问题有关
    charset utf-8;

    #access_log  logs/host.access.log  main;

    #location表达式:
    #syntax: location [=|~|~*|^~|@] /uri/ { … }
    #分为两种匹配模式,普通字符串匹配,正则匹配
    #无开头引导字符或以=开头表示普通字符串匹配
    #以~或~* 开头表示正则匹配,~*表示不区分大小写
    #多个location时匹配规则
    #总体是先普通后正则原则,只识别URI部分,例如请求为/test/1/abc.do?arg=xxx
    #1. 先查找是否有=开头的精确匹配,即location = /test/1/abc.do {...}
    #2. 再查找普通匹配,以 最大前缀 为规则,如有以下两个location
    #   location /test/ {...}
    #   location /test/1/ {...}
    #   则匹配后一项
    #3. 匹配到一个普通格式后,搜索并未结束,而是暂存当前结果,并继续再搜索正则模式
    #4. 在所有正则模式location中找到第一个匹配项后,以此匹配项为最终结果
    #   所以正则匹配项匹配规则受定义前后顺序影响,但普通匹配不会
    #5. 如果未找到正则匹配项,则以3中缓存的结果为最终结果
    #6. 如果一个匹配都没有,返回404
    
    #location =/ {...} 与 location / {...} 的差别
    #前一个是精确匹配,只响应/请求,所有/xxx类请求不会以前缀匹配形式匹配到它
    #而后一个正相反,所有请求必然都是以/开头,所以没有其它匹配结果时一定会执行到它
    
    #location ^~ / {...} ^~意思是非正则,表示匹配到此模式后不再继续正则搜索
    #所有如果这样配置,相当于关闭了正则匹配功能
    #因为一个请求在普通匹配规则下没得到其它普通匹配结果时,最终匹配到这里
    #而这个^~指令又相当于不允许正则,相当于匹配到此为止
    location / {
        root   html;
        index  index.html index.htm;
        # deny all; 拒绝请求,返回403
        # allow all; 允许请求
    }
    
    location /test/ {
        deny all;
    }
    
    location ~ /test/.+\.jsp$ {
       proxy_pass  http://192.168.1.62:8080;
    }

    location ~ \.jsp$ {
       proxy_pass  http://192.168.1.61:8080;
    }

    # 定义各类错误页
    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;
    }
    
    # @类似于变量定义
    # error_page 403 http://www.jikexueyuan.com这种定义不允许,所以利用@实现
    error_page 403 @page403;
    location @page403 {
        proxy_pass http://http://www.jikexueyuan.com;
    }
}

4.Nginx虚拟主机的配置

为了使一个服务器可以供更多的用户使用,可以将服务器氛围多个虚拟的自服务器,每个子服务器都是独立的,这些服务器是根据虚拟化技术分出来的,这样一台服务器就可以虚拟成很多台子服务器,我们把子服务器叫做虚拟主机


第一种:基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站
1.需要建立/data/www /data/bbs目录,windows本地hosts添加虚拟机ip地址对应的域名解析;对应域名网站目录下新增index.html文件; 127.0.0.1 www.mingyipc.com 127.0.0.1 www.mingyiwap.com 2.nginx.conf配置文件新增 server{ listen:80;//监听端口号 server_name: www.mingyiipc.com;//虚拟主机名称 accsess_log logs/mingyipc.log combined;//日志文件,默认格式 必须 location / 虚拟主机本机根目录 { index index.html index.htm;//默认首页 root html/mingyipc.html;//绑定的目录(安装nginx的目录) } } server{ listen:80;//监听端口号 server_name: www.mingyiwap.com;//虚拟主机名称 accsess_log logs/mingyipc.log combined;//日志文件,默认格式 必须 location / 虚拟主机本机根目录 { index index.html index.htm;//默认首页 root html/mingyiwap.html;//绑定的目录(安装nginx的目录) } } 访问: www.mingyiipc.com www.mingyiwap.com

第二种:基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台
nginx.conf配置文件新增 server{ listen:8000;//监听端口号 server_name: www.mingyi.com;//虚拟主机名称 accsess_log logs/mingyi.log combined;//日志文件,默认格式 必须 location / 虚拟主机本机根目录 { index index.html index.htm;//默认首页 root html/mingyipc.html;//绑定的目录(安装nginx的目录) } } server{ listen:8001;//监听端口号 server_name: www.mingyi.com;//虚拟主机名称 accsess_log logs/mingyi.log combined;//日志文件,默认格式 必须 location / 虚拟主机本机根目录 { index index.html index.htm;//默认首页 root html/mingyi.html;//绑定的目录(安装nginx的目录) } } 访问: www.mingyi.com:8000 www.mingyi.com:8001

第三种:基于ip的虚拟主机,几乎不用
1.配置多个ip ifconfig eth0 192.168.1.0 netmask 255.255.255.0 ifconfig eth0:1 192.168.1.7 broadcast 19.168.1.255 netmask 255.255.255.0 2.配置nginx server{ listen:192.168.1.7:80;//监听IP地址 server_name:192.168.1.7;//虚拟主机名称 accsess_log logs/mingyipc.log combined;//日志文件,默认格式 必须 location / 虚拟主机本机根目录 { index index.html index.htm;//默认首页 root html/mingyipc.html;//绑定的目录(安装nginx的目录) } }

相关文章

网友评论

    本文标题:Nginx基础

    本文链接:https://www.haomeiwen.com/subject/rqaykxtx.html