Nginx 系列:初识 Nginx,使用和配置
2015-04-09
1. 背景
本地 Mac 上,已经安装了 nginx 服务器,几个基本的问题:
- 如何启动、终止 nginx 服务?
- nginx 有哪些基本的配置,需要注意?
- 设置端口?
- 开启日志?修改日志存储路径?
- 配置反向代理映射规则?
预期目标:
本地 nginx 如何使用 stash 上的 nginx 配置,对外提供服务?具体操作,参考:《再探 nginx:配置和实践》
2. nginx 的启动和终止
通过 man 命令查询 nginx 命令的使用说明。
// 查看 nginx 命令的使用说明
man nginx
具体效果,如下:
具体 nginx 服务的启动和终止命令:
// 启动 nginx
$ nginx
// 查看 nginx 的执行状态
$ ps -ef | grep nginx
501 1045 1 0 4:18下午 ?? 0:00.00 nginx: master process nginx
501 1046 1045 0 4:18下午 ?? 0:00.00 nginx: worker process
501 1048 627 0 4:18下午 ttys000 0:00.00 grep nginx
// 关闭 nginx 服务
$ nginx -s quit
补充说明:
- 使用命令:nginx 启动服务。
- 使用命令:
nginx -s [signal]
方式,操作 nginx 服务。 - signal 详解:
- stop — fast shutdown
- quit — graceful shutdown
- reload — reloading the configuration file (重新加载配置文件)
- reopen — reopening the log files
疑惑:
- 启动 Nginx 服务时,如何能够实时输出启动文档?观察启动过程?查看启动日志?
- Nginx 对外提供服务时,如何查看 http 请求记录?
思考: 上面的本质是说 nginx 的 2 类日志,错误日志、访问日志。
3. nginx 服务的配置
3.1. 探索 nginx 命令的启动过程
通过命令,逐步探索 nginx 命令的启动过程:
- nginx 命令的安装位置?
- nginx 服务器的安装位置?
- nginx 命令的具体执行过程?
通用的命令排查思路如下:
// 查看 nginx 命令的位置
$ which nginx
/usr/local/bin/nginx
// 确定 nginx 命令的真正位置
$ ll /usr/local/bin/nginx
lrwxr-xr-x 1 guoning admin 31B 8 13 15:58 /usr/local/bin/nginx -> ../Cellar/nginx/1.8.0/bin/nginx
具体效果如下:
很遗憾,找到 nginx 命令的执行文件,并不是 shell 脚本,因此,无法通过执行文件查看 nginx 命令的具体执行过程。
3.2. 查看 nginx 的配置
如何查看 nginx 的当前配置呢?man nginx 能够查询到结果。
// 查看当前 nginx 的配置
$ nginx -V
nginx version: nginx/1.8.0
built by clang 7.0.0 (clang-700.0.72)
built with OpenSSL 1.0.2d 9 Jul 2015
TLS SNI support enabled
configure arguments:
--prefix=/usr/local/Cellar/nginx/1.8.0
--with-http_ssl_module
--with-pcre
--with-ipv6
--sbin-path=/usr/local/Cellar/nginx/1.8.0/bin/nginx
--with-cc-opt='-I/usr/local/Cellar/pcre/8.37/include -I/usr/local/Cellar/openssl/1.0.2d_1/include'
--with-ld-opt='-L/usr/local/Cellar/pcre/8.37/lib -L/usr/local/Cellar/openssl/1.0.2d_1/lib'
--conf-path=/usr/local/etc/nginx/nginx.conf
--pid-path=/usr/local/var/run/nginx.pid
--lock-path=/usr/local/var/run/nginx.lock
--http-client-body-temp-path=/usr/local/var/run/nginx/client_body_temp
--http-proxy-temp-path=/usr/local/var/run/nginx/proxy_temp
--http-fastcgi-temp-path=/usr/local/var/run/nginx/fastcgi_temp
--http-uwsgi-temp-path=/usr/local/var/run/nginx/uwsgi_temp
--http-scgi-temp-path=/usr/local/var/run/nginx/scgi_temp
--http-log-path=/usr/local/var/log/nginx/access.log
--error-log-path=/usr/local/var/log/nginx/error.log
--with-http_gzip_static_module
注意上面的几个配置:
--conf-path
:配置文件--http-log-path
:访问日志--error-log-path
:错误日志
疑问:
- 如何查看正在运行的 nginx 服务器配置?
3.3. 配置 nginx
nginx 能够提供几个基本功能:
- 静态文件服务:响应静态文件的请求
- 反向代理:设定 url 映射规则
关键看 –conf-path 对应的配置文件了,准备单独写一篇 wiki,详细说一下。
看这里:再探 nginx:配置和实践
4. 附录:补充内容
4.1. 代理 vs. 反向代理
都是代理,代理有什么好处?
- 屏蔽细节
- 进行通用处理:高效
简单科普:代理(proxy) vs. 反向代理(reverse proxy)
- 代理:
- 从 Client 角度出发
- Client 感知 proxy 存在, Client 上指定 proxy 的地址
- Client 从 Internet 中请求内容时,让 proxy 进行请求的转发
- 反向代理:
- 从 Server 角度出发
- Server 向外提供服务时,不直接提供服务,reverse proxy 对外提供服务
- reverse proxy 收到 Client 的请求后,会转发到相应的 Server 上
具体效果:
5. 参考资料
man nginx
:nginx 命令手册- Beginner Guide
- nginx control
原文地址:https://ningg.top/nginx-series-usage-and-config/