~*
/
/url
样例解释
location = /url 等号表示精准匹配,只有完全匹配上才会生效,如找到,停止搜索
location ^~ /url ^~开头表示对URL路径进行前缀匹配,并且在正则匹配之前,若找到,停止匹配
location ~ /url 表示区分大小写的正则匹配,按照配置文件顺序匹配
location ~*表示不区分大小写的正则匹配,按照配置文件顺序匹配
location /url 不带任何修饰符,表示前缀匹配,在正则匹配之后
location / 一般匹配,任何没有匹配到其他的location的请求都会匹配到,相当于default
优先级
精确匹配 > 正则匹配 > 一般匹配
题目
location = / {
[ configuration A ]
}
location / {
[ configuration B ]
}
location /documents/ {
[ configuration C ]
}
location ^~ /images/ {
[ configuration D ]
}
location ~* .(gif|jpg|jpeg)$ {
[ configuration E ]
}
The “/” request will match configuration [], A
the “/index.html” request will match configuration [], B
the “/documents/document.html” request will match configuration [], C
the “/images/1.gif” request will match configuration [], D
and the “/documents/1.jpg” request will match configuration []. E
每个应用中通常都会有很多的静态资源,比如jpg,png,css,js等等。这些静态资源如果每次都需要从服务器请求无疑会浪费很多资源。这个时候就可以使用nginx实现动静分离。
server {
listen 80;
server_name localhost;
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
root html/static;
expires 1d;
#表示缓存在本地一天
}
}
在真实的服务器环境,为了充分利用服务器资源,一台nginx服务器会同时配置N个虚拟域名主机,即多个域名对同一个80端口。
也可以用使用相同的域名配置不同的端口区分不同的虚拟主机。
Nginx提供了三种虚拟主机配置方式,
基于ip的虚拟主机,
基于端口的虚拟主机,
基于域名的虚拟主机。
最常用的是第三种,相对于 ip地址和端口号,域名更方便记忆和使用。
修改nginx.conf文件,添加两个虚拟主机,如下:
#配置虚拟主机a.test.com
server { #监听的ip和端口,配置本机ip和端口
listen 80;
#虚拟主机名称是a.test.com,请求域名a.test.com的url将由此server配置解析
server_name a.test.com;
#所有的请求都以/开始,所有的请求都可以匹配此
location location / {
#使用root指令指定虚拟主机目录即网页存放目录
root a_html;
#指定欢迎页面,按从左到右顺序查找
index index.html index.htm;
}
}
#配置虚拟主机b.test.com
server {
listen 80;
server_name b.test.com;
location / {
root b_html;
index index.html index.htm;
}
}
######反向代理
Nginx服务器的反向代理服务是其最常用的重要功能,由反向代理服务可以衍生出很多与此相关的nginx服务器重要功能。
我们工作中最常用的也是配置反向代理。
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
server {
listen 80;
server_name localhost;
location / {
#代理的地址
proxy_pass http://server2:8888;
}
}
当我们的业务规模越来越大的时候,访问量持续上升,此时一台服务器肯定是扛不住的。必需搭建集群,使用nginx的反向代理,由nginx将请求分发到每台机器,并进行负载均衡。
nginx 的 upstream目前支持 4 种方式的分配
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
#配置上游服务器
upstream myservers {
server server2:8888 weight=10;
server server3:9999 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myservers;
}
}
pstream 每个设备的状态:
1.down 表示单前的server暂时不参与负载
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout: max_fails 次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
使用ip_hash这种方式的话,虽然可以达到共享会话的目的,但是假如我们3台tomcat同时在工作,访问nginx,由nginx进行负载在其中一台tomcat,假如此时这台tomcat出现故障无法访问,这时会话就不共享了。
我们也可以把用户的各种信息保存在cookie中,用户每次请求都携带cookie,接收到请求后就可以拿到cookie中的数据。但显而易见,这种方式十分危险。
基于db(各种关系型数据库和非关系型数据库)
当然我们也可以将数据直接保存在数据库中,但如果访问量大,会频繁访问数据库,对数据库造成很大的压力。
最好的方式就是将用户信息放到redis中进行存储,由于是基于内存,因此效率非常高。 此时cookie中只需保存我们redis中的key,用户每次请求只要拿到cookie中的key然后再到redis中拿用户信息,不仅安全了,效率也提高了。
是在TCP中一个可以检测死连接的机制。keepalive实现Nginx高可用确保一个Nginx挂掉后可以重新启动
保留几分配置
1.静态文件
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “$request” ’
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8888;
server_name localhost;
location ~* .(jpg|txt|rar|mp4|)$ {
root E:/NGINX/nginx-1.16.0/file;
#expires 1d; #表示缓存在本地一天
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#server {
#}
#server {
#}
}
2.虚拟主机
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “$request” ’
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8092;
server_name localhost;
location /{
proxy_connect_timeout 300s;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
mg-TMpRNtXQ-1712657014949)]
[外链图片转存中…(img-LcpZUsOj-1712657014949)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)
[外链图片转存中…(img-lS9f3747-1712657014950)]
[外链图片转存中…(img-2Gmd6b4S-1712657014950)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
文章浏览阅读119次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼/***Getaparametervalue**@paramkeyString*@paramdefString*@returnString*/publicStringgetParameter(Stringkey,Stringdef){returnisStandalone?System.getProperty(ke..._java http隧道
文章浏览阅读913次。IP主机名备注192.168.117.14keepalived-master主节点192.168.117.15keepalived-slaver备节点192.168.117.100VIP1.主备节点均安装keepalived# yum install -y keepalived httpd2.主备节点均修改keepalived日志存放路径..._keepalived sendmail
文章浏览阅读469次。--==========================================--SPFILE错误导致数据库无法启动(ORA-01565)--========================================== SPFILE错误导致数据库无法启动 SQL> startup ORA-01078: failurein proce_ora01565 ora27046
文章浏览阅读6.1k次,点赞2次,收藏54次。功能测试基础知识总结_功能测试
文章浏览阅读3.2k次,点赞3次,收藏2次。pg 中文首字母排序_pg中文排序
文章浏览阅读3.1w次,点赞23次,收藏109次。本文主要讲解CONVERT函数_mysql convert
文章浏览阅读8.6k次,点赞2次,收藏2次。HTML5 的视频播放事件想必大家已经期待很久了吧,在HTML4.1、4.0之前我们如果在网页上播放视频无外乎两种方法: 第一种:安装FLASH插件或者微软发布的插件 第二种:在本地安装播放器,在线播放组件之类的 因为并不是所有的浏览器都安装了FLASH插件,就算安装也不一定所有的都能安装成功。像苹果系统就是默认禁用FLASH的,安卓虽然一开始的时候支持FLASH,但是在安卓4.0以后也开始不_微信开发者工具视频快进
文章浏览阅读5.4k次,点赞3次,收藏4次。在使用redis的过程常见错误总结1.JedisConnectionException Connection Reset参考这边文章:Connection reset原因分析和解决方案https://blog.csdn.net/cwclw/article/details/527971311.1问题描述Exception in thread "main" redis.clients...._jedisconnectionexception: java.net.socketexception: connection reset
文章浏览阅读8.3k次,点赞8次,收藏42次。目录1.Lua垃圾回收算法原理简述2.Lua垃圾回收中的三种颜色3.Lua垃圾回收详细过程4.步骤源码详解4.1新建对象阶段4.2触发条件4.3 GC函数状态机4.4标记阶段4.5清除阶段5.总结参考资料lua垃圾回收(Garbage Collect)是lua中一个比较重要的部分。由于lua源码版本变迁,目前大多数有关这个方面的文章都还是基于lua5.1版本,有一定的滞后性。因此本文通过参考当前..._lua5.3 gc
文章浏览阅读511次。最近家中的潮人,老妈闲着没事干,开始学玩电脑,引起他的各种好奇心。如看看新闻,上上微信或做做其他的事情。但意料之中的是电脑上会莫名出现各种问题?不翼而飞的图标?照片又不见了?文件被删了,卡机或者黑屏,无声音了,等等问题。常常让她束手无策,求助于我,可惜在电话中说不清,往往只能苦等我回家后才能解决,那种开心乐趣一下子消失了。想想,这样也不是办法啊, 于是,我潜心寻找了两款优秀的远程控制软件。两款软件...
文章浏览阅读1.8k次。二.初始化工作空间三.设置下载地址四.下载功能包此处可能会报错,请看:rosdep update遇到ERROR: error loading sources list: The read operation timed out问题_DD᭄ꦿng的博客-程序员宅基地接下来一次安装所有功能包,注意对应ROS版本 五.编译功能包isolated:单独编译各个功能包,每个功能包之间不产生依赖。编译过程时间比较长,可能需要几分钟时间。此处可能会报错:缺少absl依赖包_ros18.04 安装ca
文章浏览阅读4.1k次,点赞3次,收藏7次。Haobor2.2.1配置(trivy扫描器、镜像签名)docker-compose下载https://github.com/docker/compose/releases安装cp docker-compose /usr/local/binchmod +x /usr/local/bin/docker-composeharbor下载https://github.com/goharbor/harbor/releases解压tar xf xxx.tgx配置harbor根下建立:mkd_init error: db error: failed to download vulnerability db: database download