前端培训-初级阶段-场景实战(2019-6-13)-Nginx代理正确食用方式

本文涉及的产品
.cn 域名,1个 12个月
简介: 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。截止到 2019-05-30 期,所有成员都进行了一次分享。内部对课程进行了一些调整,之后会针对项目开始 review 。我这边预期准备进入中级阶段,中间还是会穿插一些实战。

今天讲什么?


  1. nginx 的 server


  1. nginx 的 location 匹配规则


  1. nginx 的 root、rewrite、proxy_pass、alias


  1. nginx 的命令以及报错日志


今天为什么会开这个题目?


  • 公司内部的前端构建工具升级(gulp),帮小伙伴处理了一下 nginx 的配置,辅助提升开发的体验。


  • 公司想要加快网页访问速度(前端缓存),为了测试,我改了我自己服务器的 nginx 配置。


  • PWA ()
  • manifest ()
  • 其他方案(localStroage存)
  • 缓存这块我还在实验中,我司有结果之后我会写个文章发出来。


nginx 的 server


定义虚拟主机相关。server 中通过 server_name 来匹配域名,listen来匹配端口


server_name


用于匹配域名,需要已经映射的域名。


举个栗子,我在阿里云有一台云服务器 IP:123.56.16.33:443。买了一个域名 lilnong.top


我现在把我的域名指向了我的ip。那所有请求我域名的都会到我这台服务器上。我需要用 server_name 来判断请求的是那台主机,再进行分发


listen


用于匹配端口号,一般来说,我们当做服务的就需要加上 80 和 443


协议 端口 用途
http 80 浏览器访问
https 443 浏览器访问
ftp 21


server_name 与 host 匹配优先级


  1. 完全匹配
  2. 通配符在前的,如 *.lilnong.top
  3. 在后的,如 www.lilnong.*
  4. 正则匹配,如 ~^\.www\.lilnong\.com$


如果都不匹配


  1. 优先选择 listen 配置项后有 default 或 default_server 的
  2. 找到匹配 listen 端口的第一个 server 块


nginx 的 location 匹配规则


location 是什么?


location 是用于在 server 服务中,根据 URL 进行匹配查找。属于 ngx_http_core_module 模块。


location 语法


location [ = | ~ | ~* | ^~ ] uri {...}


  • = : 精确匹配,匹配成功,则停止搜索正则; 不能有嵌套的 location。可以加速 request 的处理。


  • ~ : 区分大小写的正则匹配


  • ~*不区分大小写正则匹配


  • ^~不进行正则的匹配。


location 匹配规则


  1. 前缀匹配(prefix string)
    //static/


  1. 正则匹配(regular expresstion)(RegExp)
    \.(gif|jpg|png|js|css)$


  1. nginx 首先检查 前缀匹配,使用 longest matching prefix 最长前缀匹配规则,记住匹配的 location,然后使用正则匹配,根据他们在配置文件中的顺序,一旦匹配成功,则停止检索。


  1. 匹配时要注意/的使用。是否要封闭。


location /static { 
     # 可以匹配到 URL 如: '/static/html' 和 'statichtml/html`
 }
location /static/ { 
     # 只可匹配到 URL 如: '/static/html' 和 'static/**'
 }


nginx 的 root、rewrite、proxy_pass、alias


root


用来指定请求资源的真实路径,本地磁盘路径


location /nginx/ { 
  root /var/log/;
  #请求http://nginx.lilnong.top/nginx/20190227_access.log
  #>/var/log/nginx/20190227_access.log
}


alias


用来指定请求资源的真实路径,本地磁盘路径。会丢弃 location 所匹配的,这是和 root 的区分


location /nginx/ { 
  alias  /var/log/nginx/;
  #请求http://nginx.lilnong.top/nginx/20190227_access.log
  #>/var/log/nginx/20190227_access.log
}


rewrite


  1. 在 server 块中,会先执行 rewrite 部分,然后才会匹配 location 块。


  1. 语法:rewrite regex replacement [flag];
  1. 如果 regex 匹配到,则会使用 replacement 来替换 URL。


        b.rewrite 指令会根据在配置文件中出现的顺序依次执行,可以使用 flag 来终止接下来的处理。


        c.如果 replacement 以 http:// 或者 https:// 或者 $scheme,则停止处理,立刻重定向。


  1. flag 描述


  1. last 将根据 rewrite 后的地址重新在 server标签执行。
  2. break 将根据 rewrite 后的地址重新在当前的 location标签执行。
  3. redirect 302跳转到rewrtie后面的地址。
  4. permanent 301永久调整到rewrtie后面的地址,即当前地址已经永久迁移到新地址,一般是为了对搜索引擎友好。


#这是我把ip访问重定向到我的网页


server {
    listen 80;
    server_name 123.56.16.33;
    rewrite ^/(.*)$ https://www.lilnong.top/$1 permanent; 
}


proxy_pass


访问 https://nginx.lilnong.top/static/html


location /static/ {
  proxy_pass http://www.lilnong.top; 
  #结尾不带 `/`,将匹配到 http://www.lilnong.top/static/html
}
location /static/ {
  proxy_pass http://www.lilnong.top/; 
  #结尾带 `/`,将匹配到 http://www.lilnong.top/html
}


nginx 的命令以及报错日志


  1. 重启(重新载入配置文件) nginx -s reload


  1. 重启 nginx -s reopen


  1. 停止 nginx -s stop


  1. 启动 nginx


  1. 如果有错误,重启的时候会报错。
    在 windows 中(我们正在用的),看不到报错,服务也起不来,可以的 nginx/logs/error.log 看错误日志来排查问题。


资源


  1. nginx 中文
  2. nginx org
  3. nginx的location配置详解
相关文章
|
1月前
|
负载均衡 网络协议 Unix
Nginx七层(应用层)反向代理:SCGI代理scgi_pass篇
Nginx七层(应用层)反向代理:SCGI代理scgi_pass篇
43 1
|
29天前
|
缓存 负载均衡 应用服务中间件
Nginx 代理管理器强势登场!轻松设置反向代理,为你的网络安全与高效护航,快来探索!
【8月更文挑战第23天】Nginx 代理管理器(NPM)是一款强大的工具,用于简化反向代理的设置流程。反向代理能隐藏后端服务器的真实IP,提升安全性,实现负载均衡与缓存等功能。用户需先安装Nginx 代理管理器,然后通过其Web界面添加代理主机,指定代理名称、协议类型、服务器地址及端口等信息。对于HTTPS协议,还需上传SSL证书/密钥。完成设置后,可通过浏览器测试反向代理是否正常工作。Nginx 代理管理器还支持高级特性,如负载均衡、缓存及访问控制等。
51 1
|
30天前
|
缓存 负载均衡 应用服务中间件
【揭秘】nginx代理配置全攻略:从零到精通,一文带你玩转高效网络代理的秘密武器!
【8月更文挑战第22天】nginx是一款高性能的HTTP与反向代理服务器,支持代理服务、负载均衡及缓存等功能,有助于提升网站响应速度和安全性。首先需确保已安装nginx,可通过包管理器进行安装。安装后启动并确认nginx运行状态。接着编辑配置文件(通常位于`/etc/nginx/nginx.conf`),设置代理转发规则,例如指定目标服务器地址和请求头信息。配置完成后测试有效性并重新加载nginx以应用更改。可以通过部署简易HTTP服务器验证代理功能是否正常工作。此外,还可以通过扩展配置文件实现更复杂的代理需求,如基于路径的代理和SSL加密等。
183 2
|
1月前
|
负载均衡 前端开发 应用服务中间件
使用Nginx配置SSL以及部署前端项目
本文介绍了如何使用Nginx配置SSL证书以启用HTTPS,并展示了如何通过Nginx部署前端项目,包括配置SSL证书、设置代理和负载均衡的示例。
76 2
|
1月前
|
网络协议 Unix 应用服务中间件
Nginx七层(应用层)反向代理:UWSGI代理uwsgi_pass篇
Nginx七层(应用层)反向代理:UWSGI代理uwsgi_pass篇
62 1
|
1月前
|
缓存 安全 应用服务中间件
Nginx:关于实现跨域代理
Nginx:关于实现跨域代理
170 1
|
23天前
|
JSON 前端开发 应用服务中间件
韬光敛彩:用 nginx + express 无痛实现前端项目本地 mock
韬光敛彩:用 nginx + express 无痛实现前端项目本地 mock
|
30天前
|
缓存 负载均衡 前端开发
前端必会的nginx知识点
【8月更文挑战第22天】前端必会的nginx知识点
40 0
|
1月前
|
前端开发 应用服务中间件 API
"揭秘!面试官必问:你是如何巧妙绕过跨域难题的?前端代理VS服务器端CORS,哪个才是你的秘密武器?"
【8月更文挑战第21天】在软件开发中,尤其前后端分离架构下,跨域资源共享(CORS)是常见的挑战。主要解决方案有两种:一是服务器端配置CORS策略,通过设置响应头控制跨域访问权限,无需改动前端代码,增强安全性;二是前端代理转发,如使用Nginx或Webpack DevServer在开发环境中转发请求绕过同源策略,简化开发流程但不适用于生产环境。生产环境下应采用服务器端CORS策略以确保安全稳定。
27 0
|
1月前
|
Ubuntu 应用服务中间件 nginx
Docker 解析:如何将 Nginx 容器化并用作代理
Docker 解析:如何将 Nginx 容器化并用作代理
38 0