6.Nginx开发语法与内置常量变量介绍(收集中).md

2022-09-29 18:48:21 浏览数 (1)

[TOC]

0x00 内置常变量扩展

Ngx 变量介绍

变量名称

描述说明

示例演示

ngx.var.uri

请求的域名/后的路径字符串但不带?请求参数

/image/weiyigeek.png


0x01 内置指令扩展

指令介绍使用

internal 关键字: 表示在 location 中加入 “internal” 声明仅限内部调用。

代码语言:javascript复制
location /nodeOne/auth/ {
  internal;
  root  /var/resource/media/;
}
location = /check/auth {
  internal;
  proxy_pass http://foo.com/check-spam;
}

注意:但是由于nginx的if判断中不需要 嵌套和多条件的 && 和 || ,那就只能分开写啦: nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现: 首先是伪代码(即不被nginx支持),写在这里只是为了方便理解:

代码语言:javascript复制

if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {
    return 403;
}

下面这是等效的,并真实可用的配置
代码如下:

set $flag 0;
if ($remote_addr ~ "^(12.34|56.78)") {
    set $flag "${flag}1";
}
if ($http_user_agent ~* "spider") {
    set $flag "${flag}2";
}
if ($flag = "012") {
    return 403;
}

配置stream 模块(用于tcp和udp的转发)添加用于端口转发的配置文件conf/stream.conf

代码语言:javascript复制
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    # 使用epoll,由系统linux内核2.6提供的高性能方式
    use epoll;
    worker_connections  65535;
}

stream {
  server {
    listen 9990;
    proxy_pass 172.20.9.80:3306;
  }

  server {
    listen 9992;
    proxy_pass 172.20.9.76:22;
  }
}

http {
....
}

0 人点赞