首页 > 代码库 > nginx的配置初探

nginx的配置初探

总体而言,nginx的配置比起apache来是要简洁很多,而言容易理解得多的。我们先看一个简化版的配置文件nginx.conf:

#user  nobody;worker_processes  1;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘    #                  ‘$status $body_bytes_sent "$http_referer" ‘    #                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;    #access_log  logs/access.log  main;    sendfile        on;    #tcp_nopush     on;    #keepalive_timeout  0;    keepalive_timeout  65;    #gzip  on;    server {        listen       80;        server_name  localhost;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            root   html;            index  index.html index.htm;        }        #error_page  404              /404.html;       // ... ...    }    # another virtual host using mix of IP-, name-, and port-based configuration    #    #server {    #    listen       8000;    #    listen       somename:8080;    #    server_name  somename  alias  another.alias;    #    location / {    #        root   html;    #        index  index.html index.htm;    #    }    #}    // ... ...     }

 1. 可以看到nginx的配置文件可以分成两大部分

1)对nginx自己的进程的相关的配置:1.worker进程的数量;2.每个进程最多能够处理多少个连接;3.运行nginx的用户;4.日志文件;5.pid文件地址

2)对http服务器的配置,也就是 http 虚拟机的配置

2. nginx进程相关的配置:

   worker_processes 配置worker进程的数量,一般根据负载和CPU来将其设置成:cpu * 核心数,设置的太多会造成对CPU的争用;

   worker_connections 配置每个worker进程能够处理多少个连接,一般根据内存,cpu, 负载来配置;

3. http虚拟机的配置:

nginx处理http的虚拟机的配置都在http段内。http段中又分为:http的全局配置;针对每个server的配置,也就是针对每个虚拟主机的配置;可以看到在nginx中可以像apache一样配置多个虚拟主机。而且要比apache配置要简单得多。每一个server段配置一个虚拟主机,虚拟主机中主要配置让其监听哪个端口,进来的url如何通过location的配置去访问磁盘上哪个目录中存放的哪个文件,所以location的配置才是重点所在。

4. server的配置:
server {
        listen         80;
        server_name  www.baidu.com;

    location / {}

    // ... ...

}

listen表示监听那个端口,对于http我们一般都是监听80端口。server_name表示我们的域名,也就是网址,比如:www.baidu.com, www.cnblogs.com等等。不同的server可以监听同一个80端口,但是server_name不能相同,也可以server_name相同,但是监听端口不一样。server段中的location段主要配置对于进入本虚拟主机的url的处理。

4. location的配置:
对于根据server端中配置的 listen 监听端口和 server_name 域名而进入对于虚拟主机的url,会根据 location 的匹配情况来访问某个匹配的 location,最后访问到服务器上的某个页面。而 url 到 location的匹配分为了三种情况:





nginx的配置初探