关键词:
作者:chrootliu,腾讯 QQ 音乐前端开发工程师
查看 nginx 的文件列表,可以发现里面有一个 auto 的目录。本文将会从:安装 -> 全局配置 -> 常用的各种配置 来书写,其中常用配置写的炒鸡详细,需要的童鞋可以直接滑倒相应的位置查看。
在这个 auto 目录中有一个 options 文件,这个文件里面保存的就是 nginx 编译过程中的所有选项配置。
通过命令:cat nginx-1.17.2/auto/options | grep YES
就可以查看
nginx 编译安装时,怎么查看安装模块
编译并安装
,通过命令查看本机网络地址和端口等一些信息,找到被占用的 80 端口 netstat -ntpl
的 tcp 连接,并杀死进程(kill 进程 pid)就可以查看到,还有其它不常用这里未列出。Linux 系统应用管理工具 systemd 关于 nginx 的常用命令:
保存退出,运行 systemctl daemon-reload
使文件生效。这样便可以通过以下命令操作 nginx 了:
的错误,通过 nginx -c 参数指定配置文件即可解决的错误,可以先通过 service nginx stop
停止服务,再启动就好。配置文件的内容都需要重新到 nginx 启动目录去执行命令,或者通过 -p 参数指向特定目录,会不会感觉很麻烦?例如:直接执行 nginx -s reload
会报错 -bash: nginx: command not found
,需要到 /usr/local/nginx/sbin
目录下面去执行,并且是执行 ./nginx -s reload
。
这里有两种方式可以解决,一种是通过脚本对 nginx 命令包装,这里介绍另外一种比较简单:通过把 nginx 配置到环境变量里,用 nginx 执行指令即可。步骤如下:
1、编辑 /etc/profile
配置文件,并在配置文件中增加 vrrp_script
定义一个外围检测机制,并在 vrrp_instance
中通过定义 track_script
来追踪脚本执行过程,实现节点转移:后改为 BACKUP
,priority
改为比主机小。设置完毕后各自 service keepalived start
启动,经过访问成功之后,可以把 Master 机的 keepalived 停掉,此时 Master 机就不再是主机了 service keepalived stop
,看访问虚拟 IP 时是否能够自动切换到备机 ip addr。再次启动 Master 的 keepalived,此时 vip 又变到了主机上。
配置高可用集群的内容来源于:Nginx 从入门到实践,万字详解!
符号,这是记法上的要求。所有的 Nginx 变量在 Nginx 配置文件中引用时都须带上 $
前缀。这种表示方法和 Perl、PHP 这些语言是相似的。这种表示方法的用处在哪里呢,那就是可以直接把变量嵌入到字符串常量中以构造出新的字符串,例如你需要进行一个字符串拼接:
的时候,后面紧跟着 world
这个单词,所以如果直接写作 "$tempworld"
则 nginx 的计算引擎会将之识别为引用了变量 $tempworld
. 为了解决这个问题,nginx 的字符串支持使用花括号在 $
之后把变量名围起来,比如这里的 $temp
,所以 上面这个例子返回的还是 "hello world":符号本身,可以这样做:赋予字符串 "$"
,这样,这里的返回值就是 "hello world: $" 了。#GET 请求中变量名 PARAMETER 参数的值
$args
#这个变量等于 GET 请求中的参数,例如,foo=123&bar=blahblah;这个变量可以被修改$binary_remote_addr
#二进制码形式的客户端地址$body_bytes_sent
#传送页面的字节数$content_length
#请求头中的 Content-length 字段$content_type
#请求头中的 Content-Type 字段$cookie_COOKIE
#cookie COOKIE 的值$document_root
#当前请求在 root 指令中指定的值$document_uri
#与 $uri 相同$host
#请求中的主机头(Host)字段,如果请求中的主机头不可用或者空,则为处理请求的 server 名称(处理请求的 server 的 server_name 指令的值)。值为小写,不包含端口$hostname
#机器名使用 gethostname 系统调用的值$http_HEADER
#HTTP 请求头中的内容,HEADER 为 HTTP 请求中的内容转为小写,-变为_(破折号变为下划线),例如:$http_user_agent
(Uaer-Agent 的值)$sent_http_HEADER
#HTTP 响应头中的内容,HEADER 为 HTTP 响应中的内容转为小写,-变为_(破折号变为下划线),例如:$sent_http_cache_control
、$sent_http_content_type
…$is_args
#如果 $args 设置,值为"?",否则为""$limit_rate
#这个变量可以限制连接速率$nginx_version
#当前运行的 nginx 版本号$query_string
#与 $args 相同$remote_addr
#客户端的 IP 地址$remote_port
#客户端的端口$remote_port
#已经经过 Auth Basic Module 验证的用户名$request_filename
#当前连接请求的文件路径,由 root 或 alias 指令与 URI 请求生成$request_body
#这个变量(0.7.58+)包含请求的主要信息。在使用 proxy_pass 或 fastcgi_pass 指令的 location 中比较有意义$request_body_file
#客户端请求主体信息的临时文件名$request_completion
#如果请求成功,设为"OK";如果请求未完成或者不是一系列请求中最后一部分则设为空$request_method
#这个变量是客户端请求的动作,通常为 GET 或 POST。包括 0.8.20 及之前的版本中,这个变量总为 main request 中的动作,如果当前请求是一个子请求,并不使用这个当前请求的动作$request_uri
#这个变量等于包含一些客户端请求参数的原始 URI,它无法修改,请查看 $uri 更改或重写 URI$scheme
#所用的协议,例如 http 或者是 https,例如 rewrite ^(.+)$$scheme://example.com$1 redirect
$server_addr
#服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在 listen 中指定地址并且使用 bind 参数$server_name
#服务器名称$server_port
#请求到达服务器的端口号$server_protocol
#请求使用的协议,通常是 HTTP/1.0、HTTP/1.1 或 HTTP/2$uri
#请求中的当前 URI(不带请求参数,参数位于 args ) , 不 同 于 浏 览 器 传 递 的 args),不同于浏览器传递的 args),不同于浏览器传递的 request_uri 的值,它可以通过内部重定向,或者使用 index 指令进行修改。不包括协议和主机名,例如 /foo/bar.htmlnginx 模块分类
模块清单
核心模块:
标准 HTTP 模块:
可选 HTTP 模块:
邮件服务模块:
第三方模块:
视频号最新视频
想了解腾讯人的故事,欢迎关注:腾讯技术
js中的循环---最全的循环总结(代码片段)
在讲循环的之前,先知道一下循环结构的执行步骤 1、声明循环变量; 2、判断循环条件; 3、执行循环体操作; 4、更新循环变量; 5、然后循环执行2-4,直到条件不成立,跳出循环。while循环varnum=1;//1、声... 查看详情
(最全篇)nginx.conf配置文件详解(代码片段)
引言:大家好,我是热爱coding,崇尚开源,乐于分享的【皮卡丘的猫】 最近一直在学习nginx,总结了一下学习笔记,与大家分享一下。nginx.conf配置结构如下图所示默认的nginx.conf配置文件如下#usernobody;worker... 查看详情
史上最全sql基础知识语法(代码片段)
文章目录一、SQL基本介绍二、SQL基础1、SQL基本语法2、SQL库操作1)创建数据库2)显示数据库3)使用数据库4)修改数据库5)删除数据库6)总结3、SQL表(字段)操作1)创建数据表2)显示数据表3)查看数据表4)更改数据表5)更改字段①... 查看详情
宝藏级全网最全的pandas详细教程(2万字总结)(代码片段)
【回炉重造】Python之Pandas详细教程前言为什么要学习Pandas?什么是Pandas?1.Pandas的索引操作1.Series和DataFrame中的索引都是Index对象2.索引对象不可变,保证了数据的安全3.常见的Index种类3.1Series索引1.index指定行索引名2.行索引3.切片... 查看详情
宝藏级全网最全的pandas详细教程(2万字总结)(代码片段)
【回炉重造】Python之Pandas详细教程前言为什么要学习Pandas?什么是Pandas?1.Pandas的索引操作1.Series和DataFrame中的索引都是Index对象2.索引对象不可变,保证了数据的安全3.常见的Index种类3.1Series索引1.index指定行索引名2.行索引3.切片... 查看详情
python爬虫最全总结(代码片段)
python爬虫–总结前文回顾python爬虫–类级别写法python爬虫–爬取9某1看剧网电视剧python爬虫–爬取网易云音乐评论python爬虫–scrapy(再探)python爬虫–scrapy(初识)python爬虫–selenium模块python爬虫–异步文章目录pyt... 查看详情
python爬虫最全总结(代码片段)
python爬虫–总结前文回顾python爬虫–类级别写法python爬虫–爬取9某1看剧网电视剧python爬虫–爬取网易云音乐评论python爬虫–scrapy(再探)python爬虫–scrapy(初识)python爬虫–selenium模块python爬虫–异步文章目录pyt... 查看详情
硬核!全网最全nginx配置指令,建议收藏~(代码片段)
硬核!全网最全Nginx配置指令,建议收藏~1、前言1.1、Nginx配置文件各个主配置块说明1.2、Nginx配置符号参考1.3、本文出现的一些词汇介绍2、正文2.1、位于全局块的配置指令2.2、位于events块的配置指令2.3、位于http块的配置... 查看详情
硬核!全网最全nginx配置指令,建议收藏~(代码片段)
硬核!全网最全Nginx配置指令,建议收藏~1、前言1.1、Nginx配置文件各个主配置块说明1.2、Nginx配置符号参考1.3、本文出现的一些词汇介绍2、正文2.1、位于全局块的配置指令2.2、位于events块的配置指令2.3、位于http块的配置... 查看详情
全网最全linux命令总结!!(史上最全,建议收藏)(代码片段)
...他人持续有所收获。今天,给小伙伴们带来一篇史上最全Linux命令总结的文章,命令有点多,建议小伙伴 查看详情
全网最全linux命令总结!!(史上最全,建议收藏)(代码片段)
...他人持续有所收获。今天,给小伙伴们带来一篇史上最全Linux命令总结的文章,命令有点多,建议小伙伴 查看详情
nginx源码安装配置详解(./configure),最全解析(代码片段)
NGINX./configure详解在"./configure"配置中,"--with"表示启用模块,也就是说这些模块在编译时不会自动构建"--without"表示禁用模块,也就是说这些模块在编译时会自动构建,若你想Nginx轻量级运行,可以去除一些... 查看详情
最全javascript基础总结(代码片段)
JavaScript介绍什么是JavaScript?Javascript是一门面向对象的,跨平台的脚本语言。JavaScript有什么特点?解释性脚本语言运行在浏览器(浏览器内核带有js解释器,Chromev8引擎)弱类型语言(松散型)事件驱动(动态)跨平台JavaScript有... 查看详情
nginx面试题(史上最全+持续更新)(代码片段)
尼恩面试宝典专题39:Nginx面试题(史上最全、持续更新)本文版本说明:V27《尼恩面试宝典》升级规划为:后续基本上,每一个月,都会发布一次,最新版本,可以联系构师尼恩获取,发送... 查看详情
nginx面试题(史上最全+持续更新)(代码片段)
...学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送经典图书:《Java高并发核心编程(卷1)加强版》面试必备+大厂必备+涨薪必备加尼恩免费领免费赠送经典图书:《J... 查看详情
史上最全mysql总结mysql超详细笔记(代码片段)
【史上最全MYSQL总结】MySQL超详细笔记 本文主要介绍了mysql是个啥、他的分类、SQL命令,MySQL的安装注意事项、分类以及在MySQL中常用的命令,包括:数据查询(基本查询、排序查询、条件查询、时间查询、... 查看详情
android面试题最全总结系列(持续更新中...)(代码片段)
前言自己一直做Java、Android相关的知识总结->KnowledgeSummary系列。这个GitHub的repo想作为自己对于Android核心知识点以及一些面试题的总结,因为很多知识点理解的不够深刻,所以通过这个来强迫自己做总结,目前已经... 查看详情
这可能是把nginx讲得最全面的一篇文章了,建议收藏备用(代码片段)
点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识前言Nginx概述Nginx特点Nginx作用Nginx安装Nginx常用命令Nginx核心配置配置文件结构配置文件main段核心参数配置文件events段核心参数server_name指令rootaliasloca... 查看详情