Nginx 学习日记2

events块
  • accept_mutex: 设置Nginx网络连接得序列化(默认 accept_nutex on;)这个配置用来解决 “ 惊群问题" , 即一个请求发送过老的得时候,nginx worker进程全被唤醒了,但是最终只有一个进程可以获取到连接 所以其他worker就空转了呗, 会影响Nginx得整体性能。 这个序列化不是指Serialization, 而是Order给请求排序。使特定的进程响应请求,防止资源争夺
  • multi_accept: 设置一个worker进程是否允许同时接受多个网络连接, 默认为off. 实际上一般使用On
  • worker_connections: 配置单个worker能同时接受的最大连接数,default = 512。这里的连接数不仅仅包括与酷虎交互得连接,还包括与操作系统的连接等等。
  • use 设置Nginx服务器采用哪种时间驱动来处理网络消息 use method *; 默认为操作系统选定。 **此处是Nginx优化内容得重要部分,可以选择select/poll/epoll/kqueue等,都是多路服用模型。最好使用epoll .(不过尽量不要配,刚刚配了一下人差点没了)
HTTP块
  1. 定义MIME-Type 我们都知道浏览器为了区分html,jpg,png,xml,等等种类得文件时一定要区分的。网络上的资源以二进制流传输已经是常识了。在计网中我们学过(没记错应该是邮件那一节)邮件文件的转换就是用MIME协议。没错,Nginx可以做邮件,自然会适配MIME。

    # Nginx默认配置
    include mime.types;
    defualt_type application/octet-stream
    

    default_type默认为 text/plain 文本类型, 他可以放在http, server, location当中,支持 text/plain text/html application/json… 可以自己查查资料啦

  2. HTTP定义服务日志。Nginx服务器支持对服务日志得格式,大小,输出等进行设置,需要使用access_log 与 log_format指令

    • access_log 设置用户访问日志相关属性

      参数: access_log [path] [format] [buffer]

      access_log logs/access.log combined; 可放在http,server,location块中

    • log_format: 用来指定日志得输出格式

      参数:log_format [format_name(与上面format保持一致)] [escape = default|json|none] string;

      log_format combined “…”; 只能放在http块中

  3. 其他指令:

    (1). sendfile: 用来设置Nginx服务器是否使用sendfile传输文件,可以大大提高Nginx处理静态资源性能: default : off 可配置在http, server, location块里面。

    (2). keepalive_timeout 设置长连接得超时时间。default:75s; keepalive_timeout 75s; 可设置在http, server, location中

    (3). keepalive_request用来设置一个长连接所能使用的次数:default: keepalive_request 100.

Server, Location块之后详细介绍

Nginx配置系统服务

虽然,如果大家直接apt-get或者采用docker的话,应该不需要考虑Nginx集成到系统当中的问题。就当是拓宽只是秒我们也要去了解一下nginx是如何集成到系统中的。

Nginx得继承完全靠着nginx.service文件,用find得化还是很好找的。如果你是docker 或者apt党得化直接来这个路径就可以了: /lib/systemd/system

## 这一块主要是文档的描述信息啦,可以直接跳过不用管他们
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

## 这一段就是主要得配置信息,其中好多部份咱们看着都还是很熟悉的,像PIDfile, 接下来咱家给详细讲一下属性
[Service]
## 生成worker进程的方式是forking, 通过从master继承来生成
Type=forking
## PID文件的存放位置,上面都讲过了不在赘述
PIDFile=/var/run/nginx.pid
## 执行nginx, 并导入conf核心配置文件位置
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
## reload
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
## stop
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"

[Install]
WantedBy=multi-user.target

系统操作Nginx命令大全 (格式统一为 systemctl XXXXX) (真的超级常用,可以把上面的命令忘掉了)

  • start nginx 开启nginx
  • restart nginx 重开nginx
  • stop nginx 关闭nginx
  • reload nginx 重新加载nginx的配置文件
  • status nginx 查看nginx的状态
  • enable nginx 将nginx设为开机自启动

至于环境变量,真的,如果这个不会的话网上教程也多的很,但是,这我感觉已经属于但凡反了解计算机的都知道的通识模块的程度。

Nginx静态资源的部署, server块的开端

(终于可以系统的学习Nginx静态资源的部署了,之前部署flask项目的时候是真的被坑过) 这个东西真的是, nginx部署的项目不支持相对路径(好像) 当年没办法全部改成了绝对路径,真的太凄惨了

Nginx处理静态资源的内容,我们需要考虑

  • 静态资源的配置指令:

    listen : 用来配置监听IP 端口 连接等,

    server{	## 监听9090端口	listen 9090;}
    

    listen具体参数配置 listen port [default_server] …; default_server一律127.0.0.1处理

  • server_name: 用来设置虚拟主机服务名称。什么意思呢,就是你访问一个域名,IP, 如果是咱这台机子的话,他就去机子下面的server进行匹配,匹配到了才能对server里的http 配置的页面或相应等。可以配置127.0.0.1 localhost 域名等name

    server{
    	listen 80;
        ## 配置server_name
    	server_name localhost
    }
    

    server_name 支持多配: server name1 name2 …

    server_name 匹配方式有三种(按有限顺序排序后) 1.精确匹配(匹配一摸一样) 2. 通配符* 匹配 eg. (*.baidu.com) 3. 正则匹配

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值