Nginx做前端代理和缓存的配置文件

发布时间:2020-08-02编辑:脚本学堂
Nginx做前端代理及缓存的配置文件,很好的一篇文章,供大家学习参考。

nginx做前端代理及缓存的配置文件,很好的一篇文章,供大家学习参考。

复制代码 代码如下:
###用户和用户组
user hr hr;

###启动时调8个进程
worker_processes 8;

###分发8个进程到不同的cpu
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

###错误日志及级别
error_log logs/error.log crit;

###每个工作进程可以读取的最大文件数(ulimit -n)
worker_rlimit_nofile 40960;

###pid文件
pid logs/nginx.pid;
events
{
###使用epoll协议
use epoll;

###每个进程支持的最大连接数
worker_connections 40960;
}
http
{
include mime.types;
default_type application/octet-stream;

access_log logs/access.log main;
###超时时间(客户端要是有下载或者上传的话,最好调大些)
keepalive_timeout 120;

###根据server名字的记录其hash值,记录空间的大小
server_names_hash_bucket_size 128;

###头部缓冲区的大小为4k,超过4k将会放到large_client_header_buffers
client_header_buffer_size 4k;

###大请求的head缓冲区得个数和大小
large_client_header_buffers 4 8k;

###许客户端连接的最大请求实体大小为8M
client_max_body_size 8m;

###支持上传
sendfile on;
tcp_nodelay on;

###使得tomcat返回的404经过nginx处理
proxy_intercept_errors on;

###cache的大小,20秒检测一次
open_file_cache max=40960 inactive=20s;

###同一文件cache有效期为30秒
open_file_cache_valid 30s;

###如果在20秒内某个文件一次都没有被访问,踢出cache
open_file_cache_min_uses 1;

###实体请求的大小限制
client_body_buffer_size 512k;

###连接超时
proxy_connect_timeout 5;

###读等待超时
proxy_read_timeout 60;

###接收超时
proxy_send_timeout 5;

###从后端tomcat读取到的请求头
proxy_buffer_size 16k;

###用于与后台tomcat交互的区域大小
proxy_buffers 4 64k;

###busy时的缓冲区大小,一般都是buffers的两倍
proxy_busy_buffers_size 128k;

###对后端tomcat写操作的缓冲
proxy_temp_file_write_size 128k;

###一个临时目录,两个对应server的缓存
proxy_temp_path /home/nginx1.0/proxy_temp;

####已经被缓存的,6小时没用过,干掉
proxy_cache_path /home/nginx1.0/proxy_cache1 levels=1:2 keys_zone=proxycache1:200m inactive=6h max_size=10g;
proxy_cache_path /home/nginx1.0/proxy_cache2 levels=1:2 keys_zone=proxycache2:200m inactive=6h max_size=10g;

###后端的服务器列表
upstream cache1
{
server jiaofu-01:8083 srun_id=jvm1;
server jiaofu-02:8083 srun_id=jvm2;

###开启session记录(jvm1、jvm2是要和tomcat上完全一致的)
jvm_route $cookie_JSESSIONID reverse;
}
upstream cache2
{
server jiaofu-01:8084 srun_id=jvm1;
server jiaofu-02:8084 srun_id=jvm2;
jvm_route $cookie_JSESSIONID reverse;
}

server
###cache1
{
listen 80;
server_name jiaofu.com;
root /home//webapps/cache1;

###不显示nginx版本号
server_tokens off;

###不显示server是nginx

more_set_headers 'Server: apache';
error_page 400 403 404 500 501 502 503 504 505 http://www.jb200.com/error.html;

###禁止访问这些结尾的
location ~* .(sql|bak|inc|old)$
{
return 403;
}

###不走tomcat
location /js/*.js
{
allow all;
}
location /css/*.css
{
allow all;
}
location /images
{
allow all;
}

###nginx状态页
location /NginxStatus
{
stub_status on;
access_log on;
auth_basic "NginxStatus";
allow 127.0.0.1;
deny all;
}

###访问出了上面定义的不走tomcat的请求之外的,走cache1
location /
{
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
proxy_pass http://cache1;
}

###只缓存
location ~ .*.(html|js|css|jpg|gif|swf|png)$
{

#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache proxycache1;

#对不同的HTTP状态码设置不同的缓存时间(服务器缓存时间)
proxy_cache_valid 200 304 1h;

proxy_cache_valid any 1m;

#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://cache1;

#######客户端缓存时间
expires 10m;
}

###日志格式
log_format nginx-tomcat-social '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
}

server
###cache2
{
listen 8889;
server_name jiaofu-02.com:8999;
root /home/webapps/cache2;
server_tokens off;
error_page 400 403 404 500 501 502 503 504 505 http://jb200.com/error.html;
location ~* .(sql|bak|inc|old)$
{
return 403;
}
location /js/*.js
{
allow all;
}
location /css/*.css
{
allow all;
}
location /images
{
allow all;
}
location /jobPages/*.html
{
allow all;
}

location /NginxStatus
{
stub_status on;
access_log on;
auth_basic "NginxStatus";
allow 127.0.0.1;
deny all;
}

location /
{
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
proxy_pass http://school;
}

location ~ .*.(html|js|css|jpg|gif|swf|png)$
{
#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache proxycache2;

#对不同的HTTP状态码设置不同的缓存时间
proxy_cache_valid 200 304 6h;

#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://cache2;
expires 1d;
}
log_format nginx-tomcat-school '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
}
}