关于反向代理和正向代理
正向代理
正向代理代理的是客户端
反向代理
反向代理代理的是服务端
常用web服务器
apache、nginx(5万并发连接数响应)、tomcat、jboss
动态web服务器和静态web服务器
Nginx核心配置分析
##main
#user nobody
worker_processes 1;###配置CPU 核心数,或者是核心数的2倍
##event
events {
##io网络模型,建议使用 use epoll
worker_connections 1024;
}
##http
http {
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 html
mkdir domain
vim index.html
--配置完成以后 使用nginx -t验证配置文件是否有错误
--重新加载配置文件 ./nginx -s reload
--本地测试的化,使用本地host配置映射
127.0.0.1 localhost
192.168.56.1 www.frend.com
基于ip的虚拟主机
基于端口的虚拟主机
server {
listen 8080;
server_name localhost;
location /{
root html/port;
index index.html;
}
}
cd html
mkdir port
vim 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~9
gzip_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