前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >6.Nginx开发语法与内置常量变量介绍(收集中).md

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

作者头像
全栈工程师修炼指南
发布2022-09-29 18:48:21
3090
发布2022-09-29 18:48:21
举报
文章被收录于专栏:全栈工程师修炼之路

[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 {
....
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 内置常变量扩展
    • Ngx 变量介绍
    • 0x01 内置指令扩展
      • 指令介绍使用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档