代理的方式
- 正向代理:代理的是客户端。
eg:我们需要访问谷歌,由于谷歌被屏蔽掉了,通过vpn的代理软件访问谷歌,这种方式就是正向代理! - 方向代理: 代理的是服务端。
eg:我们需要访问百度,百度通过代理服务器访问到具体的server处理,这种方式就是反向代理!
常用的web服务器
-
apache,nginx,tomcat,jetty,netty,weblogic,iis,jboss,resin
-
静态与动态
- 静态访问:表示页面中没有动态的语言,如html等,多次处理的结果都是访问同一信息
- 动态访问:是基于jsp技术进行动态出来逻辑信息进行访问
nginx核心配置文件:
-
nginx命令:nginx -s reload 重启
nginx -t 检查配置文件 -
nginx日志切割,利用运行定时任务脚本
mv access.log access.log_20201001
kill -USR1 Nginx 主进程号 让nginx重新生成日志文件access.log -
location匹配规则
- location =/url{} 精准匹配
- location /url{} 一般匹配
- location [|^|~*]/url{} 正则匹配
优先级: 精准匹配 > 一般匹配 > 正则匹配
-
rewrite的使用
-
支持url重写;if判断、return
-
作用范围: server/location/if中;只能对域名后面的出去参数外的字符串起作用;
if(条件){}
= 号 或 ~;
return code
if($request_url ~* .sh){
return 403
} -
语法: rewrite regex replacement [flag]{last/break/redirect 返回临时302/permant 返回永久302}
last 停止处理后续的rewrite指令集,然后对当前重写的url在rewrite指令集上重新查找
break 停止处理后续的rewrite指令集,并不会重新查找
-
eg1:
...
location /{
#将相对‘/’重定向到‘百度’
rewrite ^/ http://www.baidu.com;
}
...
eg2:
...
location /{
rewrite '^/images/([a-z]{3})/(.*)\.(png)$' /mic?file=s2.s3;
set Simage_file $2;
set Simage_type $3;
}
location /mic{
access_log logs/mic.log main;
root html;
#匹配文件名,首先匹配到的直接返回
try_files /$arg_file /image404.html;
}
location =/image404.html{
return 404 "image not found exception";
}
...
-
浏览器本地缓存配置 和压缩策略
浏览器本地缓存:
expires s|m|h|d 缓存时间设置语法Gzip压缩策略:
浏览器请求 -> 告诉服务端当前浏览器可以支持压缩类型 -> 服务端会把内容根据浏览器所支持的压缩策略去进行压缩返回
-> 浏览器拿到数据以后解码;gzip、deflate、sdch
...
server {
listen 80;
server_name localhost;
#开启gzip
gzip on;
#压缩内存的申请
gzip_buffers 4 16k;
#压缩级别(1-9),级别越高,尺寸越小,cpu计算量越大
gzip_comp_level 4;
#在不到该长度的文件不进行压缩
gzip_min_length 500;
#针对与某些类型进行压缩,类型可参考conf/mime.types
gzip_type text/css text/html text/xml;
location /{
root html;
index index.html index.htm;
}
location ~\.(png|jpg|js|css|gif)${
root html/images;
expires 5m;
}
}
...
-
Upstream常用参数介绍
语法:server address [parameters]
其中关键字server必选。
address也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号。
parameters是可选参数,可以是如下参数:
1. down:表示当前server已停用
2. backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求
3. weight:表示当前server负载权重,权重越大被请求几率越大。默认是1
4. max_fails和fail_timeout一般会关联使用,如果某台server在fail_timeout时间内出现了max_fails次连接失败,
那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它,fail_timeout默认是10s,max_fails默认
是1,即默认情况是只要发生错误就认为服务器挂掉了,如果将max_fails设置为0,则表示取消这项检查。 -
nginx配置https的请求
- https是基于ssl/tls协议
- 加密方式:非对称加密,对称加密,hash算法
- crt的证书 -> 返回给浏览器
- 创建证书:
- 创建签名请求的证书(csr); csr核心内容是一个公钥
- openssl req -new -key server.key -out server.csr
- 去除使用私钥是的口令验证
- cp server.key server.key.org
- openssl rsa -in server.key.org -out server.key
- 标记证书使用私钥和csr
- openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- x509是一种证书格式
- server.crt就是我们需要的证书
- 创建签名请求的证书(csr); csr核心内容是一个公钥
-
nginx + keepalived
- keepalived -> VRRP(虚拟路由器冗余协议)
- VRRP全称 Virtual Router Redundancy Protocol,即 虚拟路由冗余协议。可以认为它是实现路由器高可用的容错协议
,即将N台提供相同功能的路由器组成一个路由器组(Router Group),这个组里面有一个master和多个backup,但在外界
看来就像一台一样,构成虚拟路由器,拥有一个虚拟IP(vip,也就是路由器所在局域网内其他机器的默认路由),
占有这个IP的master实际负责ARP相应和转发IP数据包,组中的其它路由器作为备份的角色处于待命状态。master会发组播
消息,当backup在超时时间内收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master
,保证路由器的高可用。 - 安装keepalived:
- Tar -zxvf keepalived.tar.gz
- ./configure --prefix=/mic/data/program/keepalived --sysconf=/etc
- 缺少依赖:yum install gcc ; yum install openssl-devel;yum -y install libnl libnl-devel
- 编译安装 make && make install
- cd到解压的包 /parker/data/program/keepalived-1.3.9
- ln -s /mic/data/program/keepalived/sbin/keepalived /sbin --建立软链接
- cp /mic/data/program/keepalived-1.3.9/keepalived/etc/init.d/keepalived /etc/init.d/
- 添加到系统服务
- chkconfig --add keepalived
- chkconfig keepalived on
- Service keepalived start
下面是nginx基本配置介绍
#表示的是用户或用户组
#user nobody;
#工作线程数,与cpu核心数有关,配置多个可以减少上下文切换(一般与cpu核心数相等,了解)
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 {
#配置io网络模型
use epoll
#允许链接数
worker_connections 1024;
}
http {
#配置多个服务提供(默认是轮询机制,其中还有weight权重|url_hash|ip_hash|fair根据响应时间等分配请求),
#该配置可单独放在一个.conf文件中
upstream gupaoprotal{
server 10.2.22.120:8080;
server 10.2.22.50:8080;
}
#指定包含的文件
include mime.types;
#默认类型
default_type application/octet-stream;
#日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#log声明 路径及文件名 日志格式标识
#access_log logs/access.log main;
#关闭日志
#access_log off;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#指定包含nginx配置(在其中的配置,只需要server{}配置了)
include /etc/nginx/conf.d/*.conf;
#server的配置,可配置多个;先检查域名或ip,然后匹配端口号(优先级最高)
server {
#监听端口号
listen 80;
#请求域名匹配
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#这是相对于nginx目录下的html文件夹
root html;
index index.html index.htm;
}
}
}
共有条评论 网友评论