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;
}
相关推荐
qq_316411035 小时前
商用冷柜售后报修运维管理系统开发案例
运维
智码看视界5 小时前
Day59-阿里云ACK实战:生产级K8s集群部署与运维
运维·阿里云·kubernetes·k8s·日志监控·容器运维·阿里云ack
码视野7 小时前
基于 Vue3 + Element Plus 的【智慧新能源汽车充电桩运维调度与分时共享租赁系统】设计与实现(附完整源码与PRD)
运维·人工智能·汽车·vue3
qq_426003967 小时前
【UI自动化测试】UI自动化报错解决方案
运维·ui·自动化
网安蟹佬霸7 小时前
WAF绕过技术实战:从规则检测到编码绕过全指南(2026最新版,附Payload集与自动化脚本)
运维·安全·网络安全·架构·自动化·网安
小杨不想秃头8 小时前
信息安全工程师教程第二章密码学
运维·服务器·密码学
I'mChloe8 小时前
WGCLOUD怎么监控多台服务器?从Server、Agent 部署到监控面板实战
运维·服务器
Android系统攻城狮8 小时前
Linux PipeWire深度解析之pw_init调用流程与实战(八十三)
linux·运维·服务器·音频进阶·pipewire音频进阶
国科安芯8 小时前
轨道供电韧性:ASP4644四通道降压架构在低轨卫星平台电源管理中的适用性分析
运维·网络·数据库·嵌入式硬件·架构·状态模式·低轨卫星星座
Python自动化直播9 小时前
周末测试直播自动化时,发现一个棘手的并发问题
运维·自动化