Nginx基础使用

Posted chua1989

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx基础使用相关的知识,希望对你有一定的参考价值。

 nginx 服务器重启命令,关闭

  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:
  nginx -c /path/to/nginx.conf

  平滑重启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”;
 
 
 
 
 

以上是关于Nginx基础使用的主要内容,如果未能解决你的问题,请参考以下文章

nginx.conf 忽略了 nginx-ingress 配置映射片段

将 nginx rtmp 片段发送到 WebRTC

text 有用的nginx命令和片段

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

linux学习:Nginx--常见功能配置片段与优化-06

动态SQL基础概念复习(Javaweb作业5)