KittyDaddy's blog KittyDaddy's blog
首页
  • 学习笔记

    • 《Java基础》
    • 《常用设计模式》
    • 《MYSQL》
    • 《GO语言》
    • 《Spring源码解读》
  • 微服务解决方案

    • 锁的演化
    • 简单限流方案
    • 海量数据切分
  • 中间件

    • Nginx
    • MQ
    • Redis
    • Keepalived
  • 面试记
  • 杂文
  • 开源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

老猫

万物皆系统
首页
  • 学习笔记

    • 《Java基础》
    • 《常用设计模式》
    • 《MYSQL》
    • 《GO语言》
    • 《Spring源码解读》
  • 微服务解决方案

    • 锁的演化
    • 简单限流方案
    • 海量数据切分
  • 中间件

    • Nginx
    • MQ
    • Redis
    • Keepalived
  • 面试记
  • 杂文
  • 开源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Nginx安装教程
  • Nginx系列-负载均衡(开篇)
  • Nginx系列-负载均衡(Nginx配置介绍)
  • Nginx系列-缓存控制
  • Nginx系列-配置介绍
    • Nginx系列-基础概念
    • Nginx系列-基础静态文件配置
    • Nginx系列-跨域和防盗链配置
    • Nginx系列-日志切割
    • 《Nginx》
    老猫
    2020-06-23
    目录

    Nginx系列-配置介绍

    # 开篇初衷

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

    # 配置结构以及相关语法

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

    配置结构

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

    # 核心配置文件以及介绍

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

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

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

    4. 设置nginx进程 pid

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

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

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

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

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

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

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

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

    • listen 监听端口

    • server_name localhost、ip、域名

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

    • root 请求位置

    • index 首页设置

          server {
                  listen       88;
                  server_name  localhost;
          
                  location / {
                      root   html;
                      index  index.html index.htm;
                  }
          }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9

    # 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中的日志切割。

    #Nginx#Nginx配置#Nginx教程
    上次更新: 2022/11/30, 00:06:25
    Nginx系列-缓存控制
    Nginx系列-基础概念

    ← Nginx系列-缓存控制 Nginx系列-基础概念→

    最近更新
    01
    让大龄程序员欲罢不能的事儿
    09-23
    02
    运营明明设置了活动开始时间,为什么到点没生效?聊聊动态定时任务
    07-30
    03
    不是,大哥,咱这小门小户的,别搞我CDN流量啊
    07-25
    更多文章>
    Theme by Vdoing | Copyright © 2020-2024 Kitty Daddy | License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式