Nginx最常用的指令

服务管理

复制代码
sudo systemctl status nginx # nginx当前状态
sudo systemctl reload nginx # 重新加载 nginx
sudo systemctl restart nginx # 重启nginx

sudo nginx -t   # 检查语法
nginx           # 启动
nginx -s reload # 重启
nginx -s stop   # 关闭进程
nginx -s quit   # 平滑关闭nginx
nginx -V        # 查看nginx的安装状态,

Docker 安装

复制代码
docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx

简单代理

复制代码
location / {
  proxy_pass http://127.0.0.1:3000;
  proxy_redirect      off;
  proxy_set_header    Host $host;
}

全局变量

|----------------------------------------------------------|--------------------------------------------|
| args | 这个变量等于请求行中的参数,同 query_string |
| remote_port | 客户端的端口 | | content_length | 请求头中的 Content-length 字段 |
| remote_user | 已经经过 Auth Basic Module 验证的用户名 | | content_type | 请求头中的 Content-Type 字段 |
| request_filename | 当前请求的文件路径,由 root 或alias指令与URI请求生成 | | document_root | 当前请求在 root 指令中指定的值 |
| scheme | HTTP方法(如http,https) | | host | 请求主机头字段,否则为服务器名称 |
| hostname | 主机名 | | http_user_agent | 客户端agent信息 |
| http_cookie | 客户端cookie信息 | | server_protocol | 请求使用的协议,通常是HTTP/1.0或HTTP/1.1 |
| server_addr | 服务器地址,在完成一次系统调用后可以确定这个值 | | server_name | 服务器名称 |
| server_port | 请求到达服务器的端口号 | | limit_rate | 这个变量可以限制连接速率 |
| request_method | 客户端请求的动作,如 GET/POST | | request_uri | 包含请求参数的原始URI,不包含主机名,如:/foo/bar.php?arg=baz |
| remote_addr | 客户端的IP地址 | | uri | 不带请求参数的当前URI,uri不包含主机名,如 /foo/bar.html | | document_uri | 与 uri 相同 | | nginx_version | nginx 版本 |

更多全局变量查看官方文档

监听端口

复制代码
server {
  listen 80;      # 标准 HTTP 协议
  listen 443 ssl; # 标准 HTTPS 协议
  listen 443 ssl http2; # 对于 http2
  listen [::]:80; # 使用 IPv6 在 80 上收听
  # 仅收听使用 IPv6
  listen [::]:80 ipv6only=on;
}

域名 (server_name)

复制代码
server {
  # 监听 example.com
  server_name example.com;
  # 监听多个域
  server_name example.com www.example.com;
  # 监听所有子域
  server_name *.example.com;
  # 监听所有顶级域
  server_name example.*;
  # 监听未指定的主机名(监听 IP 地址本身)
  server_name "";
}

负载均衡(简单实例)

复制代码
upstream node_js {
  server 0.0.0.0:3000;
  server 0.0.0.0:4000;
  server 127.155.142.421;
}

负载均衡(权重)

复制代码
upstream test {
  server localhost:8080 weight=9;
  server localhost:8081 weight=1;
}

upstream ip_hash

复制代码
upstream test {
  ip_hash;
  server localhost:8080;
  server localhost:8081;
}

解决负载均衡 session 的问题

upstream fair

复制代码
upstream backend {
  fair;
  server localhost:8080;
  server localhost:8081;
}

响应时间短的优先分配

server 可选参数

|--------------|------------------|
| weight | 访问权重数值越高,收到请求越多 |
| fail_timeout | 指定的时间内必须提供响应 |
| max_fails | 尝试失败服务器连接的最大次数 |
| down | 标记一个服务器不再接受任何请求 |
| backup | 有服务器宕机,标记的机器接收请求 |

配置示例

复制代码
upstream test {
  server 127.0.0.1:83 weight=9; # 权重
  server 127.0.0.1:83 weight=1; # 权重
  # 失败超时时间
  server 127.0.0.1:83 max_fails=3;
  server 127.0.0.1:83 weight=3 down;
}

upstream url_hash

复制代码
upstream backend {
  hash $request_uri;
  hash_method crc32;
  server localhost:8080;
  server localhost:8081;
}

按访问url的hash结果来分配请求

upstream keepalive

复制代码
upstream memcached_backend {
    server 127.0.0.1:11211;
    server 10.0.0.2:11211;
    keepalive 32;
}

激活缓存以连接到上游服务器

子文件夹中的代理

复制代码
location /folder/ { # / 很重要!
  proxy_pass http://127.0.0.1:3000/; # / 很重要!
  proxy_redirect      off;
  proxy_set_header    Host            $host;
  proxy_set_header    X-Real-IP       $remote_addr;
  proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
}
相关推荐
SelectDB20 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
ping某4 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智6 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_6 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化