文章目录
常用命令
查看nginx帮助命令
nginx -h
## -------------------------
例如,输出:
nginx version: nginx/1.25.1
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
[-e filename] [-c filename] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/Cellar/nginx/1.25.1_1/)
-e filename : set error log file (default: /usr/local/var/log/nginx/error.log)
-c filename : set configuration file (default: /usr/local/etc/nginx/nginx.conf)
-g directives : set global directives out of configuration file
查看nginx版本信息
nginx -v
例如,输出:
nginx version: nginx/1.18.0 (Ubuntu)
或者
nginx -V
会输出更加详细的信息。如:安装了哪些模块等;
查看nginx的进程
ps -ef|grep -i nginx
在进程列表里面找master
进程,它的编号就是主进程号了。
验证nginx配置文件是否正确
绝对路径:
/usr/sbin/nginx -t
或者
nginx -t
例子,输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
通过上面的输出,可以查看nginx的配置文件路径,即查找 nginx.cnf;
检查当前nginx的配置;
重启nginx服务
nginx -s reload
停止nginx服务
停止nginx服务有四种方法,如下:
- 从容停止服务
这种方法相对于温和一些,需要进程完成当前工作后再停止服务,命令如下:
nginx -s quit
或者
kill -QUIT 主进程号
例如:kill -QUIT 16391
- 立即停止服务
这种方法比较强硬,无论进程是否在工作,都直接停止进程,命令如下:
nginx -s stop
或者
kill -TERM 主进程号
- systemctl 停止
systemctl属于Linux命令,具体命令如下:
systemctl stop nginx.service
- kill方法杀死进程
直接杀死进程,这种方法一般使用在上面的方法都无效的情况下,具体命令如下:
kill -9 主进程号
或者
killall nginx
扩展:
列出支持的信号
kill -l
nginx配置文件
参考:
常用配置
http 块也可以包括 http全局块、server 块。
http 全局块
http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
server 块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。后面会详细介绍虚拟主机的概念。
每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
1、全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。
2、location 块
一个 server 块可以配置多个 location 块。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
rewrite 地址重定向
rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。
参考:
场景:表面上访问的是http://127.0.0.1:7777/test/xhtml//tpl/app-tpl-webapp/css/base.css,
实际上看的是http://127.0.0.1:8888/tpl/app-tpl-webapp/css/base.css的内容。
rewrite ^/(.)/tpl/(.)$ http://127.0.0.1:7777/tpl/$2; #其中$2表示的是正则中的第二串
常见问题
failed (13: Permission denied)
通过查看nginx日志,出现了failed (13: Permission denied)错误,发现是权限的问题。
解决:
将/etc/nginx/nginx.conf
中的第一行改为root。
即 user www-data; 修改为 user root;
然后在/etc/nginx目录使用nginx -s reload
命令重新加载配置,就解决了。
查看nginx是否配置 ssl 模块
使用下面命令,查看详细配置:
nginx -V
从输出里面查看安装的模块,如果有configure arguments: --with-http_ssl_module,说明ssl模块已安装。
安装证书,可以参考:
https://blog.csdn.net/u012486840/article/details/120940761
https://jelly.jd.com/article/6006b1045b6c6a01506c87b5