Nginx最常用的指令

该博客围绕Nginx展开,介绍了服务管理、Docker安装、简单代理等内容。重点讲解了负载均衡的多种配置,如简单实例、权重配置,还提及了upstream的多种策略,像ip_hash解决session问题、fair按响应时间分配等,同时涉及监听端口、域名设置等。

服务管理

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;
}
nginx常用指令包括: - 设置配置文件路径:`nginx -c filename`,默认配置文件路径是`/etc/nginx/nginx.conf` - 启动nginx: - 默认启动:`./nginx`,默认加载`/usr/local/conf/nginx.conf`配置文件 - 指定配置文件:`./nginx -c 配置文件位置` - 记录进程的方式启动:`./nginx -g "pid文件位置;"`,注意要加上引号和分号 - 重启nginx: - 验证语法是否有问题:`nginx -t` - 重新加载配置文件:`nginx -s reload` - 通过发送信号量的方式重新加载:`kill -hup 进程编号` - 停止nginx: - 信号量停止:`ps -ef|grep nginx`查询nginx进程,然后使用`kill -quit 进程编号`从容停止,或者使用`kill -term 进程编号`快速停止 - 强制停止:分别干掉master和worker进程,可以使用`-s stop`快速停止 - 优雅地停止:使用`-s quit`命令,与快速停止有区别。优雅地停止会先关闭监听端口,停止接收新的连接,然后处理完当前正在处理的连接,后退出进程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [nginx常用命令大全](https://blog.youkuaiyun.com/qq_59747594/article/details/125275505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [nginx在linux中常用的命令介绍](https://blog.youkuaiyun.com/weixin_45521583/article/details/110210102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值