Nginx系列-配置介绍

开篇初衷

上一节老猫和大家分享了Nginx的相关的一些概念,以及一些基础的Nginx的模型,本节开始,和大家一起探讨一下Nginx的一些配置信息,讲清楚所以然,为什么要这么配置,这么配置有什么作用,这是本节的初衷。

配置结构以及相关语法

玩过nginx的都知道nginx.conf,nginx的最主要的配置也就是在这个文件中。我们首先看一下这个配置的结构信息。打开nginx.conf文件,我们浏览一下,大概可以得到如下一个结构图。

配置结构

上述结构图还是比较清晰,老猫相信大多数开发配置nginx的话其实主要是为了做前后端分离的项目,因此,接触最多的也就是http模块中server的配置,对其他的配置有什么作用,应该不是每个人都知道。所以接下来每个模块的详细介绍,且听老猫接下来细细分析。

核心配置文件以及介绍

  1. 设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为nobody

    1
    user root;
  2. worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行

    1
    worker_processes 1;
  3. nginx 日志级别debug | info | notice | warn | error | crit | alert | emerg,错误级别从左到右越来越大

  4. 设置nginx进程 pid

    1
    pid        logs/nginx.pid;
  5. 设置工作模式

    1
    2
    3
    4
    5
    6
    events {
    # 默认使用epoll
    use epoll;
    # 每个worker允许连接的客户端最大连接数
    worker_connections 10240;
    }
  6. http 是指令块,针对http网络传输的一些指令配置

    1
    2
    http {
    }
  7. include 引入外部配置,提高可读性,避免单个配置文件过大

    1
    include       mime.types;
  8. 设定日志格式,main为定义的格式名称,如此 access_log 就可以直接使用这个变量了

    1
    2
    3
    4
    5
    #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;
    参数名 参数意义
    $remote_addr 客户端ip
    $remote_user 远程客户端用户名,一般为:’-’
    $time_local 时间和时区
    $request 请求的url以及method
    $status 响应状态码
    $body_bytes_send 响应客户端内容字节数
    $http_referer 记录用户从哪个链接跳转过来的
    $http_user_agent 用户所使用的代理,一般来时都是浏览器
    $http_x_forwarded_for 通过代理服务器来记录客户端的ip
  1. sendfile使用高效文件传输,提升传输性能。启用后才能使用tcp_nopush,是指当数据表累积一定大小后才发送,提高了效率。

    1
    2
    sendfile        on;
    tcp_nopush on;
  2. keepalive_timeout设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗。

    1
    2
    #keepalive_timeout  0;
    keepalive_timeout 65;
  3. gzip启用压缩,html/js/css压缩后传输会更快

    1
    gzip on;
  4. server可以在http指令块中设置多个虚拟主机

    • listen 监听端口

    • server_name localhost、ip、域名

    • location 请求路由映射,匹配拦截

    • root 请求位置

    • index 首页设置

      1
      2
      3
      4
      5
      6
      7
      8
      9
      server {
      listen 88;
      server_name localhost;

      location / {
      root html;
      index index.html index.htm;
      }
      }

Nginx中遇到的一些需要注意的点

(1)如果nginx.pid丢失,我们要进行手动创建该文件,并且对nginx服务进行reload重启。如果nginx处于启动状态,我们先要查询当前nginx的进程号码,然后设置到我们的nginx.pid中,然后进行重新reload我们的服务器。

(2)自己配置的配置文件无法找到的时候,我们可以用以下命令./nginx -c +路径的方式,进行设置相关的配置文件信息。

Nginx中常用命令整理

(1)./nginx -t 校验自己设置的nginx配置文件是否有效。

(2)./nginx -s reload 重新加载nginx的配置文件信息。

(3)./nginx -s quit 功能性优雅地关闭nginx服务,非强制性关闭,如果有客户有所链接,等释放之后才进行关闭。

(4)./nginx -s stop 暴力关闭,直接快速关闭nginx服务,紧急情况下使用该指令。

(5)./nginx -h 或者./nginx -?查询nginx的用法大全。

(6)./nginx -c +path 手动设置相关配置文件信息,指定配置文件路径,多配置下可以手动切换核心配置文件。

(7)./nginx -v简单版本信息 ./nginx -V表示详细版本信息。

总结

以上就是我们第二章的学习内容,我们介绍了相关的配置详细信息,另外地也和大家分享了一些常用的nginx的命令。大家可以对着这些去敲一下命令尝试一下。下一章我们介绍nginx中的日志切割。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×