Rewrite规则含义就是某个URL重写成特定的URL,从某种意义上说为了美观或者对搜索引擎友好,提升收录量及排名等。css
rewrite <regex> <replacement> [flag];html
关键字 正则 替代内容 flag标记前端
Rewrite规则的flag标记主要有如下几种: java
1) last : 至关于Apache里的(L)标记,表示完成rewrite;nginx
2) break: 本条规则匹配完成后,终止匹配,再也不匹配后面的规则 正则表达式
3) redirect: 返回302临时重定向,浏览器地址会显示跳转后的URL地址 centos
4) permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址 浏览器
last和break用来实现URL重写,浏览器地址栏URL地址不变缓存
如下是两个例子tomcat
a) 例如用户访问www.james1.com,想直接跳转到网站下面的某个页面,www.james1.com/new.index.html如何来实现呢? 咱们可使用Nginx Rewrite 来实现这个需求,具体以下:在server中加入以下语句便可:
rewrite ^/$ http://www.test.com/index01.html permanent;
rewrite <regex> <replacement> [flag];
关键字 正则 替代内容 flag标记
*表明前面0或更多个字符 +表明前面1或更多个字符 ?表明前面0或1个字符 ^表明字符串的开始位置 $表明字符串结束的位置 。为通配符,表明任何字符
b) 例如多个域名跳转到同一个域名,nginx rewrite规则写法以下:
server { listen 80; server_name www.james1.com; if ($host != ‘www.james1.com’ ) { rewrite ^/(.*)$ http://www.james1.com/$1 permanent; }
格式:
rewrite <regex> <replacement> [flag];
关键字 正则 替代内容 flag标记
说明:
rewrite为固定关键字,表示开始进行rewrite匹配规则、
regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址
replacement部分是http://www.james1.com/$1,$1是取自regex部分( )里的内容。匹配成功后跳转到的URL。
flag部分 permanent表示永久301重定向标记,即跳转到新的 http://www.james1.com/$1 地址上
什么是防盗链
好比http://www.james1.com/download/Tokyohot.rmvb 这个视频下载地址
加上如下配置,实现防盗链
server { listen 80; server_name www.james1.com *.james.com; location ~* \.(rmvb|jpg|png|swf|flv)$ { valid_referers none blocked www.james1.com; root html/b; if ($invalid_referer) { #rewrite ^/ http://www.james1.com/403.html; return 403; } } }
第一行:rmvb|jpg|png|swf|flv表示对rmvb|jpg|png|swf|flv后缀的文件实行防盗链
第二行:www.james1.com表示对此域名开通白名单,好比在www.test.com的index.html引用download/Tokyohot.rmvb,无效
if{$invalid_referer}里面内容的意思是,若是请求不是从www.james.com白名单发出来的请求,直接返回403也是能够。
若是在服务器端用 http://127.0.0.1:8080/download/Tokyohot.rmvb, 是不能够访问到的。
或者用以下设置也能够:
location ~* \.(rmvb|jpg|png|swf|flv)${ if ($host != 'www.james1.com') { return 403; } }
Nginx动静分离是让动态网站里的动态网页根据必定规则把不变的资源和常常变的资源区分开来,动静资源作好了拆分之后,咱们就能够根据静态资源的特色将其作缓存操做,这就是网站静态化处理的核心思路。原理以下图
注意事项:
1,WEB项目开发时要注意,将静态资源尽可能放在一个static文件夹
2,将static静态资源文件夹放到Nginx能够取到的位置
3,页面要创建全局变量,方便修改路径
4,修改nginx.conf的location, 匹配静态资源请求
Ps: 前端引用文件js或css文件时,最好路径前加一个公共变量,以便跨服务器时一处修改多处做用。
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了能够实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)功能。所以,Keepalived除了可以管理LVS软件外,还能够做为其余服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件
如何实现故障转移?
Keepalived高可用服务对之间的故障切换转移,是经过 VRRP 来实现的。
在 Keepalived服务正常工做时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点本身还活着,当主 Master节点发生故障时,就没法发送心跳消息,备节点也就所以没法继续检测到来自主 Master节点的心跳了,因而调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。
实验环境配置以下:同窗们根据本身机器IP来设置
192.168.1.110:nginx + keepalived master 主 192.168.1.111:nginx + keepalived backup 从 192.168.1.111:tomcat_8080 192.168.1.111:tomcat_8081
虚拟ip(VIP):192.168.1.200,对外提供服务的ip,也可称做浮动ip,各个组件之间的关系图以下:
1,下载地址:https://pan.baidu.com/s/1G7sLL-YkZGSMu8G76yz1Rw 密码:adbw。
2.keepalived安装步骤:192.168.1.110:nginx + keepalived master节点:
A./configure --prefix=/data/program/keepalived --sysconf=/etc ##由于keepalive启动时候会默认读取/etc/keepalived/keepalived.conf B.make && make install
3,修改/etc/keepalived/keepalived.conf配置文件信息
global_defs { #全局配置 notification_email { james@qq.com #设置报警邮件地址,能够设置多个,每行一个。须要开启sendmail服务。 } notification_email_from sns-lvs@gmail.com smtp_server smtp.hysec.com #设置SMTP Server地址 smtp_connection_timeout 30 #设置SMTP Server的超时时间 router_id nginx_master #表示运行Keepalived服务器的一个标识,惟一的 } vrrp_script chk_http_port { script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本 interval 2 #(检测脚本执行的间隔,单位是秒) weight 2 } vrrp_instance VI_1 { #vrrp 实例定义部分 state MASTER # 指定keepalived的角色,MASTER为主,BACKUP为备 interface ens33 # 当前进行vrrp通信的网络接口卡(当前centos的网卡) virtual_router_id 66 # 虚拟路由编号,主从要一直 priority 100 # 优先级,数值越大,获取处理请求的优先级越高 advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数) authentication { auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通讯 auth_pass 1111 } track_script { chk_http_port #(调用检测脚本) } virtual_ipaddress { 192.168.1.200 # 定义虚拟ip(VIP),可多设,每行一个 } }
以上主节点的配置, 从节点backup配置和主节点同样,只是state要改为backup, priority 值要比master小点便可
4,启动keepalived
/data/program/keepalived/sbin/keepalived
5,启动顺序:
1,启动192.168.1.111服务器上的tomcat8080和tomcat8081 2,启动Master 192.168.1.110的Keepalived节点,sh脚本也会被执行并自动启动Nginx 3,启动Backup 192.168.1.111的Keepalived节点,sh脚本也会被执行并自动启动Nginx
注:不须要手动启动Nginx
6,查看keepalived日志: tail -f /var/log/messages
7,KEEPLIVED主从故障测试
1,两组Keepalied+Nginx应用都启动成功后,使用VIP以负载均衡方式访问两个Tomcat 2,中止192.168.1.110主节点的Nginx应用,观察Nginx状态,并访问Tomcat; 3,中止192.168.1.110主节点的Keepalived应用,观察日志/var/log/messages,并访问tomcat 4,观察1.111从节点的日志,角色变动状况。
HTTP协议以明文方式发送内容,不提供任何方式的数据加密,若是攻击者截取了Web浏览器和网站服务器之间的传输报文,就能够直接读懂其中的信息,所以HTTP协议不适合传输一些敏感信息,好比信用卡号、密码等。
为了解决HTTP协议的这一缺陷,须要使用另外一种协议:安全套接字层超文本传输协议HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通讯加密
Nginx 与 HTTPS操做
1.生成证书与私钥
Ø 建立服务器私钥
openssl genrsa -des3 -out server.key 1024
Ø 建立签名请求的证书(CSR)
openssl req -new -key server.key -out server.csr
Ø 加载SSL支持的Nginx并使用私钥时去除口令:
cp server.key server.key.bak
openssl rsa -in server.key.bak -out server.key
Ø 自动签发证书:
openssl x509 -req -days 10240 -in server.csr -signkey server.key -out server.crt
2.Nginx配置修改
把证书和私钥加入到nginx配置里
server { listen 443 ssl; server_name www.james1.com localhost; ssl_certificate server.crt; ssl_certificate_key server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; }
3.重启nginx
/usr/local/nginx/sbin/nginx -s reload