欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx配置文件说明

程序员文章站 2022-05-07 08:21:55
...

Nginx的全局配置

代码如下:

user  nobody nobody;
worker_processes  2;
error_log  logs/error.log  notice;
pid        logs/nginx.pid;
worker_rlimit_nofile 65535;
 
events{
     use epoll;
     worker_connections      65536;
}

每个配置选项的含义解释如下:

  • user是个主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
  • worker_processes是个主模块指令,指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。建议指定和CPU的数量一致即可。
  • error_log是个主模块指令,用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
  • pid是个主模块指令,用来指定进程pid的存储文件位置。
  • worker_rlimit_nofile用于绑定worker进程和CPU, Linux内核2.4以上可用。
  • events事件指令是设定Nginx的工作模式及连接数上限:
  • use是个事件模块指令,用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选。
  • worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。最大客户端连接数由worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections。
    在作为反向代理时,max_clients变为:max_clients = worker_processes * worker_connections/4。
    进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效

server虚拟主机配置

下面介绍对虚拟主机的配置。
建议将对虚拟主机进行配置的内容写进另外一个文件,然后通过include指令包含进来,这样更便于维护和管理。

server{
	listen          80;
	server_name    192.168.8.18  cszhi.com;
	index index.html index.htm index.php;
	root  /wwwroot/www.cszhi.com
	charset gb2312;
	access_log  logs/www.ixdba.net.access.log  main;
}
  • server标志定义虚拟主机开始
  • listen用于指定虚拟主机的服务端口
  • server_name用来指定IP地址或者域名,多个域名之间用空格分 开。
  • index用于设定访问的默认首页地址
  • root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。
  • Charset用于 设置网页的默认编码格式。
  • access_log用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式。

location URL匹配配置

URL地址匹配是进行Nginx配置中最灵活的部分。
location支持正则表达式匹配,也支持条件判断匹配,用户可以通过location指令实现Nginx对动、静态网页进行过滤处理。
使用location URL匹配配置还可以实现反向代理,用于实现PHP动态解析或者负载负载均衡。
以下这段设置是通过location指令来对网页URL进行分析处理,所有扩展名以.gif、.jpg、.jpeg、.png、.bmp、.swf结尾的静态文件都交给nginx处理,而expires用来指定静态文件的过期时间,这里是30天。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  {
                root    /wwwroot/www.cszhi.com;
               expires 30d;
        }

以下这段设置是将upload和html下的所有文件都交给nginx来处理,当然,upload和html目录包含在/web/wwwroot/www.cszhi.com目录中。

 location ~ ^/(upload|html)/  {
        root    /web/wwwroot/www.cszhi.com;
        expires 30d;
        }

在最后这段设置中,location是对此虚拟主机下动态网页的过滤处理,也就是将所有以.jsp为后缀的文件都交给本机的8080端口处理。

location ~ .*.php$ {
    index index.php;
    proxy_pass http://localhost:8080;
}