nginx配置文件,


nginx简介

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。———百度百科

nginx配置文件总览

Nginx中文文档:http://www.nginx.cn/doc/index.html
Nginx官方文档:http://nginx.org/en/docs/

nginx的配置文件的位置:
/etc/nginx/nginx.conf,使用sudo vim /etc/nginx/nginx.conf查看默认配置信息。
nginx的配置文件的主体结构:

#运行用户
    user www-data;
    #启动进程,通常设置成和cpu的数量相等
    worker_processes  auto;
    pid /run/nginx.pid;

    events {#事件控制,控制Nginx处理连接方式
        #epoll是多路复用IO(I/O Multiplexing)中的一种方式,
        #仅用于linux2.6以上内核,可以大大提高nginx的性能
        use     epoll;

        #单个后台worker process进程的最大并发链接数
        worker_connections  1024;

        # 并发总数是 worker_processes 和 worker_connections 的乘积
        # 即 max_clients = worker_processes * worker_connections
        # worker_connections 值的设置跟物理内存大小有关
        # 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数
        # 查看主机可以打开的文件句柄数是多少的命令:$ cat /proc/sys/fs/file-max
    }



    http {#HTTP配置

        #设定日志格式
        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 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
        #对于普通应用,必须设为 on,
        #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
        #以平衡磁盘与网络I/O处理速度,降低系统的uptime.
        sendfile     on;
        #tcp_nopush     on;

        #连接超时时间
        #keepalive_timeout  0;
        keepalive_timeout  65;
        tcp_nodelay     on;

        #配置上游服务器地址名为amigo_local_ends
        upstream amigo_local_ends {
            #负载均衡算法
            ip_hash;
            server 127.0.0.1:9900;
            server 127.0.0.1:9901;
            server 127.0.0.1:9902;
            server 127.0.0.1:9903;
        }


        server {#虚拟主机配置
            #侦听80端口
            listen    80;
            #定义使用 storelocal.amigo.com访问
            server_name  storelocal.amigo.com;

            client_max_body_size 8m;
            #定义服务器的默认网站根目录位置
            root /home/ych/Documents/amigo/assets;

            #设定本虚拟主机的访问日志
            error_log   /var/log/nginx/amigo.local.error_log info;

            #自定义不同路由使用不同的配置信息处理请求,其中调用了tornado本地配置信息
            location / {
                try_files $uri @tornado;
            }

            #定义一个名为tornado的本地配置信息
            location @tornado {
                proxy_pass_header Server;
                proxy_set_header Host $http_host;#设置请求头信息
                proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_pass http://amigo_local_ends;#请求传递到上游服务器
            }
        }

        #从外部加载符合当前语法结构的配置信息文件
        include    mime.types;
    }

location的路由匹配规则:

语法

location [=|~|~*|^~] /uri/ { … }

多个 location 配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

首先匹配 =
其次匹配 ^~
其次是按文件中顺序的正则匹配
最后是交给 / 通用匹配
当有匹配成功时候,停止匹配,按当前匹配规则处理请求

官网例子:

location = / {
    [ configuration A ]
}
location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
}

访问路由产生的效果如下:

  • 访问根目录 /, 比如 http://localhost/ 将匹配规则 A.
  • 访问 http://localhost/login 将匹配规则 B,
  • 访问 http://localhost/documents/a.html 将匹配规则 C
  • 访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则 E ,而 http://localhost/static/c.png 则优先匹配到规则 D

后台应用服务器负载均衡配置方法

在项目中生成单独的配置文件,然后通过include加载到nginx主配置文件中。

upstream amigo_local_ends {
            #负载均衡算法
            ip_hash;
            server 127.0.0.1:9900;
            server 127.0.0.1:9901;
            server 127.0.0.1:9902;
            server 127.0.0.1:9903;
        }

server {#虚拟主机配置
            #侦听80端口
            listen    80;
            #定义使用 storelocal.amigo.com访问
            server_name  storelocal.amigo.com;

            client_max_body_size 8m;
            #定义服务器的默认网站根目录位置
            root /home/ych/Documents/amigo/assets;

            #设定本虚拟主机的访问日志
            error_log   /var/log/nginx/amigo.local.error_log info;

            #自定义不同路由使用不同的配置信息处理请求,其中调用了tornado本地配置信息
            location / {
                try_files $uri @tornado;
            }

            #定义一个名为tornado的本地配置信息
            location @tornado {
                proxy_pass_header Server;
                proxy_set_header Host $http_host;#设置请求头信息
                proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_pass http://amigo_local_ends;#请求传递到上游服务器
            }
        }

Web站点服务器配置方法

在项目中生成单独的配置文件,然后通过include加载到nginx主配置文件中。

server {
        listen 8080 default_server;
        listen [::]:8080 default_server;
        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;


        root /home/junhua/Downloads/doc;

        # 首页配置
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                try_files $uri $uri/ =404;
        }                
}

参考网址:http://www.nginx.cn/76.html
参考书籍:《Python Web 开发实战》

相关内容

    暂无相关文章