美文网首页
nginx.conf配置

nginx.conf配置

作者: 黄二的NPE | 来源:发表于2018-06-24 20:24 被阅读19次

nginx.conf是nginx最主要和唯一的配置文件,nginx中其它的配置文件最终都可能会以inclue进到这个文件中。

概括

打开nginx.conf,我们会发现基本上每一个nginx.conf 都可以分成 main(全局设置)、events(nginx工作模式)、http(http设置)、 sever(主机设置)、location(URL匹配)、upstream(负载均衡服务器设置) 六个配置部分。

main
events   {
  ....
}
http        {
  ....
  upstream myproject {
    .....
  }
  server  {
    ....
    location {
        ....
    }
  }
  server  {
    ....
    location {
        ....
    }
  }
  ....
}
main
user  www;  #nginx的用户,如果访问或者读写的文件不是该用户的或者该用户没有权限会返回403
worker_processes  1; #worker进程的个数,一般等于cpu的核数,可以通过 cat /proc/cpuinfo查看核数
error_log  logs/error.log; # nginx错误日志存放的路径
pid  logs/nginx.pid; #nginx的pid
worker_rlimit_nofile 65535;  #进程能打开的文件数,与ulimit -n保持一致
event
events {
    use epoll; # 使用epoll作为IO模型
    worker_connections  65535; #每个进程能处理的连接数,开启了反向代理的nginx能处理的连接数 = worker_connections * worker_processes / 4;
}
http

用来处理http请求的模块

http {
    include       mime.types; # nginx支持的http的contentType类型
    default_type  application/octet-stream; #如果传过来的contentType不是mine.types类型,则当作这个处理
    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都是开启高效日志处理
    tcp_nopush     on; 
    keepalive_timeout  65; # 设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接
    gzip  on; # 开启压缩功能
}
server

(主机设置)http的子模块,主要用于定义一个虚拟机,指定虚拟主机域名、IP和端

server {
        listen 80;  #监听的端口号
        server_name  localhost;  #监听的域名
        charset utf-8; # 编码设置
        access_log  logs/host.access.log  main; # 日志地址

        error_page  404  /404.html; # 当返回404的时候对应的状态码
        error_page   500 502 503 504  /50x.html;
    }
location

server的子模块(URL匹配特定位置后的设置),用于匹配网页位置(比如,根目录“/”,“/images”,等等)

        location ^~ /checkonline/ { # 匹配的url,这里是匹配/checkonline/开头的url
          root html; # server 的根目录 
           index index.html index.htm index.jsp; # 默认首页地址
           proxy_redirect off;  # 通过设置响应头Location字段来设置跳转地址
           proxy_set_header Host $host; # 设置跳转请求头
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass http://127.0.0.1:8302/checkonline/; # 跳转服务器
        }

匹配规则

  1. = 开头表示精确匹配
  2. ^~ 开头表示uri以某个常规字符串开头,不是正则匹配
  3. ~ 开头表示区分大小写的正则匹配;
  4. ~* 开头表示不区分大小写的正则匹配
  5. / 通用匹配, 如果没有其它匹配,任何请求都会匹配到
upstream

http的子模块 上游服务器设置,主要为反向代理、负载均衡相关配置

upstream hello-servers {
    #ip_hash;
    server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;
    server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;
    server 127.0.0.1:8082 weight=1 max_fails=2 fail_timeout=30s;
    server 127.0.0.1:8083 weight=1 max_fails=2 fail_timeout=30s;
}

负载均衡算法
ip_hash : 根据ip的hash结果分配,这样子来自同一个ip的访客会固定访问一个后端服务器,有效解决了动态网页存在session共享的问题.

weight 轮询(默认): 每个请求按时间顺序逐一分配到不同的后端服务器,指定轮询权值,weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。

fair 比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

url_hash: 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

down : 表示该server暂不参与负载均衡
backup : 只有其他非back机器出现故障或者忙,才会请求backup机器
max_fails : 允许失败的次数,默认为1, 失败后会返回proxy_next_upstream模块定义的错误
fail_timeout : 在经历了max_fails次失败后,暂停服务的时间

相关文章

网友评论

      本文标题:nginx.conf配置

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