nginx配置文件

蓝咒 提交于 2020-02-11 23:48:55

简介

Nginx作为优秀的web服务器,通常用来作反向代理、负载均衡、静态资源服务等使用。

配置文件详解

#user nobody;  #配置用户或者组,默认为 nobody。
worker_processes 1;  #工作进程的进程数,默认为1,每个进程大概花费10M左右的内存,一般指定为CPU的核心数。
#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别依次为:debug|info|notice|warn|error|crit|alert|emerg
events { #nginx驱动模型
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #进程的最大连接数,默认为512
}
http { #http设置
    include       mime.types;   #文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain。这里指定为二进制流。
    #access_log off; #取消服务日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
    access_log log/access.log myFormat;  #combined为日志格式的默认值
    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    upstream platform{  #上游服务器地址,负载均衡服务器设置 
      server 127.0.0.1:8080 weight=1; #配置负载的地址和权重
      server 127.0.0.2:8080 weight=2;
      server 127.0.0.3:8080 backup;  #备份服务器,其他服务器无法使用时访问这个服务器
    }
    error_page 404 https://www.baidu.com; #错误页
    server { #主机设置
        keepalive_requests 120; #单连接请求上限次数。
        listen       4545;   #监听端口
        server_name  127.0.0.1;   #监听地址       
        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
           #root path;  #根目录
           #index vv.txt;  #设置默认页
           proxy_pass  http://platform;  #请求转向platform 定义的服务器列表
           deny 127.0.0.1;  #拒绝的ip,all表示所有
           allow 172.18.5.54; #允许的ip           
        } 
    }
}

配置反向代理

反向代理主要是设置proxy_pass

...
http { 
    ...
    server {
        keepalive_requests 120; #单连接请求上限次数。       
        location  /baidu {
           proxy_pass  http://www.baidu.com/;  
           proxy_read_timeout 1800s; #请求超时时间
           proxy_set_header   Host $host:$server_port; 
           proxy_set_header   X-real-ip  $remote_addr;
           proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;  #添加转发客户端地址
           proxy_set_header   X-Forwarded-Proto  $scheme; 
           deny 127.0.0.1;  #拒绝的ip,all表示所有
           allow 172.18.5.54; #允许的ip           
        } 
    }
}

注意: proxy_pass中配置的地址中当末尾有’/'时,转发时会去掉location上的路径,如上例子:

  • http://www.baidu.com/时:访问的地址为http://www.baidu.com/
  • http://www.baidu.com时:访问的地址为http://www.baidu.com/baidu

配置负载均衡

负载均衡是在反向代理基础上增加上游服务器数量,来分摊负载,增加upstream

...
http { 
    ...
    upstream platform{  #上游服务器地址,负载均衡服务器设置 
      server 127.0.0.1:8080 weight=1; #配置负载的地址和权重
      server 127.0.0.2:8080 weight=2 max_fails=3 fail_timeout=20s;
      server 127.0.0.3:8080 backup;  #备份服务器,其他服务器无法使用时访问这个服务器
      server 127.0.0.4:8080 down; #不参与负载
    }
    server {
        keepalive_requests 120; #单连接请求上限次数。       
        location  /platform {
           proxy_pass  http://platform;  #对应upstream 后面的名字
           proxy_read_timeout 1800s; #请求超时时间
           proxy_set_header   Host $host:$server_port; 
           proxy_set_header   X-real-ip  $remote_addr;
           proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;  #添加转发客户端地址
           proxy_set_header   X-Forwarded-Proto  $scheme; 
           deny 127.0.0.1;  #拒绝的ip,all表示所有
           allow 172.18.5.54; #允许的ip           
        } 
    }
}

负载均衡默认为轮询模式,即127.0.0.1:8080访问一次,127.0.0.2:8080访问两次,反复循环。 max_fails(允许失败的次数)、fail_timeout(经历最大失败次数后暂停时间)。

静态资源

nginx配置静态访问有root和alias两种方式,他们的区别和proxy_pass 后面的“/”差不多,root会带上过滤的地址,alias不会带上过滤的地址

...
http { 
    ...
    server {
    	location /static/ {
    		root /www/root/html/; #访问的地址为/www/root/html/static/
    	}
		location /static/ {
    		alias/www/root/html/static/; #访问的地址为/www/root/html/static/
    	}
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!