反向代理Nginx 精华一页纸
Posted 一页纸世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反向代理Nginx 精华一页纸相关的知识,希望对你有一定的参考价值。
所谓反向代理,其实就是一个资源分发器,根据资源类型,把请求分发到不同服务器上。nginx不仅是一个很好的httpd服务器,也是一个很好的反向代理服务器(apache也可以做反向代理)
1、nginx配置
I、脚本语言
a、nginx 采用指令式配置, 类似与linux和dos的命令,每个指令都是分号结束,还可以嵌套子指令 {}
b、采用 # 注释 和dos、linux类似;忽略空格
II、全局配置
主要配置全局的一些信息、进程数、日志路径等等
#运行用户
#user nobody;
#进程数,一般等同于cpu的数量
worker_processes 1;
#全局错误日志及PID文件
#error_log logs/error.log error|info;
#pid logs/nginx.pid;
III、工作模式 events
配置影响nginx服务器或与用户的网络连接
#工作模式及连接数上限
events {
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,即 NIO 方式
use epoll;
#单个后台worker process进程的最大并发链接数
worker_connections 1024;
}
IV、http 模块
http{
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"';
access_log logs/access.log main;
#zero copy的文件传输
sendfile on;
#tcp_nopush on;
#连接超时时间
#keepalive_timeout 0;
tcp_nodelay on;
#开启gzip压缩 gzip_comp_level gzip_types等,需要在CPU和带宽做一个平衡
gzip on;
#设定请求缓冲
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
# 转发的服务器,upstream 为负载均衡做准备
# 负载均衡 三种策略, 轮询; 加权轮询 weight = 1 值越大占比越多;根据哈希 ip_hash/hash $request_uri 等等;
upstream tomcat_server{
server 127.0.0.1:8080;
}
V、虚拟主机 server 模块 - 可以同时配置多个
keepalive_requests 120; #单连接请求上限次数。
#定义资源的根目录位置
root /home/static;
#设定本虚拟主机的访问日志
access_log logs/access.log main;
#默认请求
location / {
#定义首页索引文件的名称
index index.php index.html index.htm;
}
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#静态文件,nginx自己处理,使用的是正则表达式匹配
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
expires 30d;
}
# 动态请求的转发
location ~ .*.jsp$ {
proxy_pass http://tomcat_server;
proxy_set_header Host $host;
}
#禁止访问 .htxxx 文件
location ~ /.ht {
deny all;
}
}
其实 nginx 配置远不止这么多,不仅可以设置http首部(比如 proxy_set_header X-Real-IP $remote_addr;) 而且还可以编程,nginx 都可以出一本书了,比如淘宝某个大神写的。不过基本配置就够了。
2、nginx 优化策略
I、线程 和 连接数
worker_processes (CPU 数)/ worker_connections (理论上越大越好, 要测试一下)
II、长连接 keepalive
keepalive_requests 单用户最大的请求数,根据实际场景, 可以做一些限制
keepalive_timeout 长连接维持时间,如果过长则影响并发数,如果过短则单用户请求过多频繁操作链接影响效率
另外,对upstream维持长连接需要设置
proxy_http_version 1.1
proxy_set_header Connection "";
III、通用配置
access 日志使用 缓存 buffer
sendfile on; 一般情况要打开 这个 gzip 互斥,因为Zero Copy不经过用户空间,所以无法启用 gzip
IV、缓存
a、设置本地缓存 proxy_busy_buffers_size proxy_max_temp_file_size ...
b、设置响应首部 proxy_set_header 或者用 add_header 给客户端浏览器建议本地缓存,具体可参考本博《Http 协议精华一页纸》
V、限制
主要防止单点客户的异常拖垮nginx 服务器
a、限制客户端浏览器 limit_conn(限制连接)/limit_rate(限制带宽)/limit_req(限制请求)
b、限制 代理的服务器 max_conns(限制连接)
另外,还有很多对Linux内核的优化,可以参见下面的博文
http://blog.csdn.net/gb4215287/article/details/51765110
以上是关于反向代理Nginx 精华一页纸的主要内容,如果未能解决你的问题,请参考以下文章