关于反向代理和正向代理
正向代理
正向代理代理的是客户端
反向代理
反向代理代理的是服务端
常用web服务器
apache、nginx(5万并发连接数响应)、tomcat、jboss
动态web服务器和静态web服务器
Nginx核心配置分析
##main#user nobodyworker_processes 1;###配置CPU 核心数,或者是核心数的2倍##eventevents {##io网络模型,建议使用 use epollworker_connections 1024;}##httphttp {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;##虚拟主机server {##监听端口号listen 80;server_name localhost;##匹配域名规则location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
虚拟主机配置
基于域名的虚拟主机
server {##监听端口号listen 80;server_name www.frend.com;##匹配域名规则location / {root html/domain;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}cd htmlmkdir domainvim index.html--配置完成以后 使用nginx -t验证配置文件是否有错误--重新加载配置文件 ./nginx -s reload--本地测试的化,使用本地host配置映射127.0.0.1 localhost192.168.56.1 www.frend.com
基于ip的虚拟主机
基于端口的虚拟主机
server {listen 8080;server_name localhost;location /{root html/port;index index.html;}}cd htmlmkdir portvim index.html
Nginx的日志配置
assess.log 访问日志
error.log 错误日志
通过access_log进行日志记录
nginx中有两条是配置日志的:一条是log_format来设置日志格式;另外一条是access_log;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';
access_log 格式
#error_log  logs/error.log  notice;
log 声明     路径文件名       日志标识
自定义日志格式
log_format myformat '$remote_addr - $remote_user';access_log logs/my.log myformat;
日志切割
location 的语法和匹配规则
location [正则表达式]/uri{}
location匹配规则
精准匹配 优先级最高
location=/uri{}
一般匹配
location /uri{}
正则匹配
匹配顺序 : 精准匹配 > 一般匹配 > 正则匹配
rewrite使用
支持url重写;支持if判断、return指令
作用范围:server/location/if 中;只能对域名后面的除去字符串之外的字符串其作用。
if(条件){}
= 号 或者~;
return 指令
return code
if($request_uri ~ *.sh){
return 403
}
语法:rewrite regex replacement[flag] {last/break/redirect 返回临时302/permant 返回永久302}
使用rewrite跳转到百度
server {listen 8080;server_name localhost;location /{rewrite ^/ http://www.baidu.com;}}
使用rewrite跳转到不存在视图:如自定义404和系统提供的404视图
在$2.$3后面添加break或者last;
last:停止处理后续的rewrite指令集、然后对当前重新的uri在rewrite指令集上重新查找
break:停止处理后续的rewrite指令集,并不会重新查找。
浏览器本地缓存配置
expires
s|m|h|d:秒|分钟|小时|天
server {listen 8080;server_name localhost;location /{root html;index index.html index;}location ~\.(png|jpg|js|css/gif)${root html/images;expires 5m;//缓存5分钟}}
Gzip压缩策略
浏览器请求 -> 告诉服务端当前浏览器可以支持压缩类型;
服务端会把内容会根据浏览器的压缩策略进行压缩返回
浏览器拿到数据后解码展示。
server {listen 8080;server_name localhost;//开启压缩策略gzip on;gzip_buffers 4 16k;gzip_comp_level 4;//会影响到图片的失帧 1~9gzip_min_length 500;//这个长度的时候不会被压缩gzip_types text/css text/xml application/javascript;location /{root html;index index.html index;}location ~\.(png|jpg|js|css/gif)${root html/images;expires 5m;//缓存5分钟}}
反向代理
vim proxy.conf
server {listen 8080;server_name localhost;location =/s{##拿到header参数proxy_set_header X_Real_IP $remonte_addr;proxy_pass http://www.baidu.com;}}##引入http{include /etc/nginx/conf.d/*.conf;}
负载均衡
vim upstream.conf
upstream tomcatserver{##策略ip_hash;server 192.168.0.100:8080;server 192.168.0.101:8080;}##引入http{include /etc/nginx/conf.d/upstream.conf;}server {listen 8080;server_name localhost;location =/s{proxy_pass http://tomcatserver;}}
支持的策略
默认是轮询机制
ip_hash 更具hash值来做转发
权重 weight=x
fair 根据服务器的响应时间来分配请求
url_hash
