nginx相关

1、pid的位置及作用

示例:pid  pid/nginx.pid;

简介:nginx.pid文件存储master进程的ID,启动、停止nginx时需要使用到。应注意配置的路径Nginx有该目录的写权限。

2、nginx进程数设置

worker_processes  20;

指定Nginx worder进程个数。如果没有阻塞式调用,建议进程个数和CPU内核数相同,如果有阻塞式调用,建议比CPU内核数稍大一点。

3、绑定Nginx worker进程到指定的CPU

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

简介:绑定到不同的CPU可以减少抢占同一个CPU的情况。

4、server匹配规则

首先要匹配listen的端口,然后按照server_name进行匹配。

Host可以与多个server_name匹配时按照以下优先级进行匹配(假设Host为www.xxx.com):

  1. 所有字符完全匹配的,eg:www.xxx.com
  2. 通配符在前面的,eg:*.xxx.com
  3. 通配符在后面的,eg:www.xxx.*
  4. 正则表达式,eg:~^(?<www>.+)\.xxx\.com$。这里正则表达式的’~‘是必须加的,参见http://nginx.org/en/docs/http/server_names.html

Host与所有的server_name均不匹配时:

  1. listen中有default或default_server的server块
  2. 第一个匹配端口的server块

5、location匹配

语法:location [=|~|~*|^~|@] /uri/ {...}

示例:

location ~ ^/xxx/static/combo\b {

    if ($http_orp_virtual_port = "8080") {

        rewrite ^/(.*)$ https://$host/$1 redirect;

    }

    rewrite ^/(.*)$ / break;

    root /home/work/orp/xx;

    concat on;

    concat_max_files 10;

    concat_unique off;

}

匹配规则如下(假设请求的uri为/module/controller/action):

  • = 表示把URI作为字符串,做完全匹配,eg:location = /module/controller/action
  • ~ 表示匹配时是大小写敏感的
    • location ~ /module/controller/action匹配成功
    • location ~ /Module/Controller/Action匹配失败
  • ~* 表示匹配时不区分大小写
  • ^~ 表示匹配uri时只要前半部分匹配即可,eg:location ^~ /module/
  • @ 表示仅用于Nginx内部的重定向

location在匹配时,若有多个location都可以匹配,是取第一个匹配的location。这点和server的匹配方式不同。

6、定义upstream

upstream块定义了一个上游服务器的集群,在反向代理时通过proxy_pass使用。

upstream xxx_server_name {

    server 19.143.127.26:8240;

    server 19.26.208.54:8200 backup;

    server 19.58.37.36:8220 backup;

    server 19.128.168.43:8250 backup;

}

location / {

    set $subsys xxx;

    set $pub_env $case;

    if ( $pub_env ~ "1" ) {

        proxy_pass http://xxx_server_name;

        break;

    }  

    if ( $pub_env ~ "2" ) {

        proxy_pass http://xxx_server_name;

        break;

    }  

    if ( $pub_env ~ "0" ) {

        proxy_pass http://wallet-core_wallet-core-prev_server_name;

        break;

    }  

}

7、什么叫反向代理

        说到反向代理,一个好奇的东西肯定就是为什么是“反向”。举个栗子好了,我通过科学上网工具,访问墙外的网站www.xxx.com,www.xxx.com不知道真正请求他的客户端是谁,方向定义为为“正”,代理就是“科学上网工具”;而反向代理,我请求www.xxx.com,而www.xxx.com内部转发给了其他服务器,方向定义为“反”,代理就是负责转发的那台服务器。

8、nginx作为反向代理的作用和特点

        书中介绍了Nginx作为反向代理服务器的特点,当客户端发来HTTP请求时,Nginx不会立刻转发到上有服务器,而是把请求完整的接收后,再向上有服务器发起连接,把缓存的客户端请求转发到上游服务器。

         这种反向代理的方式,缺点是延长了一个请求的时间、增加了缓存;优点则是减轻了上游服务器的压力,因为外部请求的传输速度相对于内部转发较慢,缓存完外部请求后再请求上游服务器可以减少维持连接的时间,进而减轻了上游服务器的压力。

<think>好的,用户需要了解Nginx相关的命令。首先,我要确定用户的使用场景,可能是正在搭建Web服务器或者需要管理现有的Nginx服务。用户可能是开发人员、系统管理员或者刚开始学习的新手,因此需要基础且实用的命令。 接下来,我要回忆常见的Nginx命令,比如启动、停止、重启等操作,这些是基本且重要的部分。同时,配置测试和重新加载配置也很关键,因为修改配置文件后需要正确操作才能生效。另外,日志相关命令可能也是用户需要的,比如查看实时日志或切割日志文件。 需要分门别类组织这些命令,让用户容易查找。例如分为服务管理、配置相关、日志管理和其他实用命令。每个部分下给出具体命令和简要说明,确保用户明白每个命令的作用和使用场景。 还要注意是否需要提醒用户权限问题,比如使用sudo的情况,特别是Ubuntu/Debian和CentOS/RHEL系统下的区别。此外,检查Nginx配置文件的默认路径,不同系统可能有不同位置,需要指出常见的路径。 可能用户会遇到配置错误,所以强调在修改配置后测试语法的重要性,避免服务崩溃。另外,日志文件的位置和实时查看方法对调试问题很有帮助,也应该包含在内。 最后,确保所有命令准确无误,语法正确,避免用户执行时出错。如果有必要,可以给出示例或注意事项,比如日志切割后需要reload让Nginx重新打开日志文件。 总结一下,需要涵盖服务控制、配置测试与重载、日志处理和其他常用命令,结构清晰,步骤明确,帮助用户高效管理Nginx。</think>以下是常用的Nginx命令整理,按场景分类说明: --- ### 一、服务管理命令 1. **启动Nginx** ```bash sudo systemctl start nginx # 系统级服务管理(Ubuntu/CentOS) sudo service nginx start # 旧版系统 ``` 2. **停止Nginx** ```bash sudo systemctl stop nginx sudo nginx -s stop # 直接通过Nginx命令停止 ``` 3. **重启Nginx** ```bash sudo systemctl restart nginx # 完整重启(断开连接) sudo nginx -s reload # 平滑重启(不中断服务,需配置无误) ``` 4. **查看状态** ```bash sudo systemctl status nginx # 检查运行状态和日志片段 ps aux | grep nginx # 查看进程信息 ``` --- ### 二、配置相关命令 1. **测试配置文件语法** ```bash sudo nginx -t # 检查配置文件是否有错误 ``` 2. **重新加载配置** ```bash sudo nginx -s reload # 应用新配置(需先通过 -t 测试) ``` 3. **查看配置文件路径** ```bash nginx -V 2>&1 | grep -o 'conf-path=.*' # 显示主配置文件位置 ``` - 默认路径: - Ubuntu/Debian: `/etc/nginx/nginx.conf` - CentOS/RHEL: `/etc/nginx/nginx.conf` --- ### 三、日志管理 1. **实时查看访问日志** ```bash tail -f /var/log/nginx/access.log ``` 2. **查看错误日志** ```bash tail -f /var/log/nginx/error.log ``` 3. **日志切割(按需归档)** ```bash sudo mv /var/log/nginx/access.log /var/log/nginx/access.log.$(date +%Y%m%d) sudo nginx -s reopen # 重新打开日志文件(需提前配置logrotate) ``` --- ### 四、其他实用命令 1. **查看Nginx版本** ```bash nginx -v # 简略版本 nginx -V # 详细信息(编译参数) ``` 2. **列出加载的模块** ```bash nginx -V 2>&1 | grep --color=auto -o 'with-.*' ``` --- ### 注意事项 1. **权限问题**:操作Nginx服务通常需要`sudo`权限。 2. **配置生效**:修改配置文件后必须执行 `nginx -t` 测试,再通过 `reload` 生效。 3. **日志路径**:实际日志路径可能因配置不同而变化,请以`nginx.conf`中的定义为准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值