Web后端杂记
阅读量
0
阅读人次
0
Nginx 必要知识
这里只会记录 Nginx 的必要知识点,在实际应用中,OpenResty 提供了更为友好和强大的功能,所以应当:
- 要尽可能少地配置
nginx.conf
- 避免使用
if
、set
、rewrite
等多个指令的配合 - 能通过 Lua 代码解决的,就别用 Nginx 的配置、变量和模块来解决。
这样可以最大限度地提高可读性、可维护性和可扩展性。
Nginx配置语法
Nginx 通过配置文件来控制自身行为,它的配置可以看作是一个简单的 DSL。Nginx 在进程启动的时候读取配置,并加载到内存中。如果修改了配置文件,需要你重启或者重载 Nginx,再次读取后才能生效。
worker_processes auto;
pid logs/nginx.pid;
error_log logs/error.log notice;
worker_rlimit_nofile 65535;
events {
worker_connections 16384;
}
http {
server {
listen 80;
listen 443 ssl;
location / {
proxy_pass https://foo.com;
}
}
}
stream {
server {
listen 53 udp;
}
}
每个指令都有自己适用的上下文(Context),也就是 NGINX 配 置文件中指令的作用域。
最上层的是 main,里面是和具体业务无关的一些指令,比如上面出现的 worker_processes、pid 和 error_log,都属于 main 这个上下文。另外,上下文是有层级关系的,比如 location 的上下文是 server,server 的上下文是 http,http 的上下文是 main。
指令不能运行在错误的上下文中,NGINX 在启动时会检测 nginx.conf 是否合法。比如我们把 listen 80;
从 server 上下文换到 main 上下文,然后启动 NGINX 服务,会看到类似这样的报错:
"listen" directive is not allowed here ......
NGINX 不仅可以处理 HTTP 请求 和 HTTPS 流量,还可以处理 UDP 和 TCP 流量。
其中,七层的放在 HTTP 中,四层的放在 stream 中。在 OpenResty 里面, lua-nginx-module 和 stream-lua-nginx-module 分别和这俩对应
Nginx命令行
-? -h
:帮助-c
:使用指定的配置文件-g
:指定配置指令-p
:指定运行目录-s
:发送信号stop
:立刻停止服务quit
:优雅的停止服务reload
:在不停止服务的情况下,重载配置文件reopen
:重新开始记录配置文件
-t -T
:测试配置文件是否有语法错误-v -V
:打印nginx的版本信息、编译信息等