在 https://openresty.org/en/download.html 中下载 OpenResty 的源代码,然后按照 Nginx 的编译步骤执行即可。
Nginx 配置文件 配置规则 events { worker_connections 1024; } http { #incloud mime.types; #default_type application/octet-stream; log_format main \'$remote_addr - $remote_user [$time_local] "$request" \' \'$status $body_bytes_sent "$http_referer" \' \'"$http_user_agent" "$http_x_forwarded_for"\'; #access_log logs/geek.access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; gzip_min_length 1; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png multipart/form-data; server { listen 8080; server_name 127.0.0.1; #charset koi8-r; access_log logs/geek.access.log main; location /lua { default_type text/html; content_by_lua \' ngx.say("User-Agent: ", ngx.req.get_headers()["User-Agent"]) \'; } } #error_page 404 /404.html; }如上所示,是一个非典型的 Nginx 配置文件,Nginx 的配置文件语法遵循以下规则:
配置文件由指令与指令块构成
每条指令以 ; 结尾,指令与指令的参数之间以空格符号分割
指令块以 {} 将多条指令组织在一起
events { # 指令块 worker_connections 1024; # 指令 }include 语句允许组合多个配置文件,以提升可维护性
使用 # 添加注释
使用 $ 符号添加变量
部分指令的参数支持正则表达式
配置参数 时间单位ms:毫秒
s:秒
m:分钟
h:小时
d:天
M:月 = 30 天
y:年 = 365 天
空间单位bytes
k/K:kilobytes
m/M:megabytes
g/G:gigabytes
HTTP 配置的指令块http:表示由 http 模块来处理请求
upstream:表示上游服务器地址
server:表示站点地址
location:表示 URL
这些指令块在接下来都会遇到。
Nginx 命令行在刚刚编译完成的 Nginx 目录下,有一个 sbin 目录,就是用来存放 Nginx 的二进制文件的
➜ sbin ll total 1712 -rwxr-xr-x 1 mtdp staff 854K 3 3 07:29 nginxNginx 启动时,有一系列的命令行参数可以指定,下面分别介绍一下。
./nginx -h/-? # 打开帮助 -c # 使用指定的配置文件,而不是默认的 conf 文件夹下的配置文件 -g # 指定配置命令,覆盖掉配置文件中的指令 -p # 指定运行目录 -s # 发送信号 stop 立刻停止服务;quit 优雅的停止服务;reload 重载配置文件;reopen 重新开始记录日志文件 -t/-T # 测试配置文件是否有语法错误 -v/-V # 打印 nginx 的版本信息、编译信息等 热部署当配置文件发生变更时,需要重载配置文件:
nginx -s reload但想要更换 nginx 版本时,就需要采用热部署的方式:
查看现有 master 进程的 pid。可以看出来,worker 进程是 master 进程的子进程
拷贝新的二进制文件到安装目录,然后 kill 发送信号给现有的 master 进程
# master 进程 pid 为 83308 kill -USR2 61333查看 Nginx 进程。可以发现,新的 master 进程也是基于老的 master 进程 fork 出来的