Nginx基础使用
nginx 服务器重启命令,关闭
启动nginx:
start nginx: 普通启动
nginx -c /path/to/nginx.conf
nginx -c /path/to/nginx.conf
nginx -s reload :修改配置后重新加载生效
nginx -s reopen :重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
关闭nginx:
nginx -s stop:快速停止nginx
quit :完整有序的停止nginx
其他的停止nginx 方式:
ps -ef | grep nginx
kill -QUIT 主进程号 :从容停止Nginx
kill -TERM 主进程号 :快速停止Nginx
pkill -9 nginx :强制停止Nginx
平滑重启nginx:
kill -HUP 主进程号
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
关闭nginx:
nginx -s stop:快速停止nginx
quit :完整有序的停止nginx
其他的停止nginx 方式:
ps -ef | grep nginx
kill -QUIT 主进程号 :从容停止Nginx
kill -TERM 主进程号 :快速停止Nginx
pkill -9 nginx :强制停止Nginx
平滑重启nginx:
kill -HUP 主进程号
Nginx server匹配规则正解
语法格式:location [=|~|~*|^~|@] /uri/ { … }
其中“~ ”和“~* ”前缀表示正则location ,“~ ”区分大小写,“~* ”不区分大小写;其他前缀(包括:“=”,“^~ ”和“@ ”)和无任何前缀的都属于普通location
nginx匹配规则:
先普通location,然后再正则location
普通location内部(普通location与普通location)实行以“ 最大前缀匹配”为普通location结果(注意:这是一个临时结果,还要进行后面的正则location匹配)。
然后再进行正则location匹配。
正则location内部(正则location与正则location)实行“书写顺序匹配”,匹配到第一个就停止后面的正则匹配。
然后决策匹配结果是“正则匹配如果有匹配上则覆盖普通location匹配结果,否则返回普通location匹配结果”
通常情况下:先普通,后正则,但是也可以再匹配普通完成后阻止继续正则匹配
要做到这一点两种方式:
- 只要在“普通location ”前面加上“^~ ”符号(^ 表示“非”,~ 表示“正则”,字符意思是:不要继续匹配正则)。
- 可以加“= ”。
区别很简单,共同点是它们都能阻止继续搜索正则location ,不同点是“^~ ”依然遵守“最大前缀”匹配规则,然而“= ”不是“最大前缀”,而是必须是严格匹配(exact match )。
但其实还有一种“隐含”的方式来阻止正则location 的搜索,这种隐含的方式就是:当“最大前缀”匹配恰好就是一个“严格精确(exact match )”匹配,照样会停止后面的搜索。原文字面意思是:只要遇到“精确匹配exact match ”,即使普通location 没有带“= ”或“^~ ”前缀,也一样会终止后面的匹配。
先举例解释下,后面例题会用实践告诉大家。假设当前配置是:
location /exact/match/test.html { 配置指令块1 } location /prefix/ { 配置指令块2 } location ~ \.html$ { 配置指令块3 }
如果请求 GET /prefix/index.html ,则会被匹配到指令块3 ,因为普通location /prefix/ 依据最大匹配原则能匹配当前请求,但是会被后面的正则location 覆盖;
当请求GET /exact/match/test.html ,会匹配到指令块1 ,因为这个是普通location 的exact match ,会禁止继续搜索正则location 。
总结来说: “正则 location 匹配让步普通location 的严格精确匹配结果;但覆盖普通 location 的最大前缀匹配结果”
server其他描述:
alias:别名,匹配后,匹配的路径直接替换alias中的路径, alias指定的目录后面必须要加上"/"符号!
location /www/ {
alias /home/www/;
}
location为"www.xxx.com/www/index.html"最终查早到“/home/www/index.html”;
root:根目录,匹配后,从root目录开始查找文件的目录。
location /www/ {
root /home/www/;
}
location为"www.xxx.com/www/index.html"最终查早到“/home/www/www/index.html”;
实战1:所有路由匹配到html的文件则添加不缓存,
server { listen 80; listen [::]:80; server_name localhost; root /usr/share/nginx/html; location / { # $request_filename表示最终比配到的文件,html文件需要添加不缓存 if ($request_filename ~ .*\.(htm|html)$) { add_header Cache-Control no-cache; } try_files $uri $uri/ /index.html; } }