前端童鞋-Nginx必知必会

前端童鞋-Nginx必知必会

今天盘一下常用的ng配置项,当然不完全是ng,都是在平时开发过程中遇到的问题总结

nginx 常用命令

  • ngixn -t 测试配置文件是否有语法错误

  • ngixn 开启nginx

  • ngixn -s reload 重启nginx

  • ngixn -s stop 关闭nginx

  • service status nginx 查看nginx状态 使用该命令的前提是我们把nginx配置成系统服务,当然还有service nginx start,service nginx restart,service nginx stop

  • ps -ef | grep nginx  查看nginx进程

  • kill -9 pid 强制杀掉进程号

  • pkill nginx 终止nginx进程

常用前端配置

现在都是spa应用,常规项目只需要配置80端口的代理即可,但是为了项目规范性以及安全性考虑,我们会把后端服务也挂在同前端域名下,使用nginx反向代理,还有一些场景,比如有些服务只能公司内网访问,但当前项目需要外网访问,我们可以在当前ng下配置个代理,前端发送同域请求,根据nginx路径匹配去代理到其他内网域名,解决直接请求内网域名导致无响应的状况,还有对于image的跨域设置,详细使用canvas绘制图片的人都碰到过这个问题,百度方案大多是设置crossorigin:'anonymous',实际上如果你请求的图片服务器没有设置Access-Control-Allow-Origin*的情况下,怎么设置crossorigin都是无用的,这时候nginx的魔力又来了,我们请求同域名下的图片,根据路径映射其他域名地址,轻松搞定。

先看看location的语法 location [=|~|~*|^~|@] pattern { ... },初看很复杂,其实玩的多了轻轻松松。

「=」 修饰符:要求路径完全匹配

server {
    server_name website.com;
    location = /abcd {
    […]
    }
}

「~」修饰符:区分大小写的正则匹配

server {
    server_name website.com;
    location ~ ^/abcd$ {
    […]
    }
}

^/abcd$这个正则表达式表示字符串必须以/开始,以$结束,中间必须是abcd,这个和我们常写的正则一样。

「~*」不区分大小写的正则匹配

server {
    server_name website.com;
    location ~* ^/abcd$ {
    […]
    }
}

「^~」修饰符:前缀匹配

如果该 location 是最佳的匹配,那么对于匹配这个 location 的字符串, 该修饰符不再进行正则表达式检测。注意,这不是一个正则表达式匹配,它的目的是优先于正则表达式的匹配

查找的顺序及优先级

当有多条 location 规则时,nginx 有一套比较复杂的规则,优先级如下:

  • 精确匹配 =
  • 前缀匹配 ^~(立刻停止后续的正则搜索)
  • 按文件中顺序的正则匹配 ~或~*
  • 匹配不带任何修饰的前缀匹配。
# nginx 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×