nginx 静态资源代理服务
说明
由于企信多数应用实现了前后端分离,即界面层与业务逻辑层分离。
业务逻辑层应用程序需使用tomcat、jar等方式运行,静态页面则使用nginx代理访问。
且nginx可配置缓存访问量大的静态资源(如用户头像),提高系统响应速度。
安装
请根据以下链接部署
- 代理软件nginx部署
代理静态资源
- 配置代理静态资源
# 将静态资源放于/data/eim/www目录下
ll /data/eim/www/plist/eim.plist
# nginx配置代理/data/eim/www目录下的静态资源
vim /etc/nginx/conf.d/default.conf
# 配置运行端口
listen 80;
# 静态页面路径,将文件放于该目录下,即可被浏览器访问
location / {
root /data/eim/www;
# 错误页面路径
location = /50x.html {
root /data/eim/www;
:wq!
- haproxy代理
acl nginx-server path_beg -i /plist
use_backend nginx-server if nginx-server
backend nginx-server
mode http
option forwardfor
server wget 10.10.10.100:80 check inter 10s
浏览器访问静态资源 http://haproxy_ip:port/plist/eim.plist
缓存用户头像
- nginx代理文件预览服务配置
编辑/etc/nginx/conf.d/default.conf
worker_processes 4;
events {
worker_connections 4096;
use epoll;
}
http {
upstream cloudfs-server {
# cloudfs地址
server 10.111.12.34:8082 max_fails=3 fail_timeout=30s;
server 10.111.34.44:8082 max_fails=3 fail_timeout=30s;
}
# 需要提前创建缓存文件存放的目录/data/eim/nginx_cloudfs_image_cache,可使用的空间至少比配置的max_size=30g 大
proxy_cache_path /data/eim/nginx_cloudfs_image_cache levels=1:2 keys_zone=cloudfs_image_cache:200m max_size=30g inactive=15d;
# 如果有强制升级客户端,造成并发下载客户端压力过大可按如下配置缓存客户端文件
# proxy_cache_path /data/eim/nginx_upgrade_cache levels=1:2 keys_zone=upgrade_cache:100m max_size=10g inactive=30d;
rewrite_log on;
server {
listen 8088;
server_tokens off;
# 缓存文件
location ~ ^(/api/fs/view/|/cloudfs/api/fs/view/) {
if ($uri ~* /api/fs/view/) {
rewrite ^/api/fs/view/(.*)$ /cloudfs/api/fs/view/$1 break;
}
proxy_cache cloudfs_image_cache;
proxy_cache_valid 200 15d;
# 缓存404
proxy_cache_valid 404 1d;
proxy_cache_key $uri$args;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
add_header Nginx-Cache $upstream_cache_status;
proxy_pass http://cloudfs-server;
break;
}
# 缓存升级客户端文件
# location ~ ^/upgrade/api/fs/download/internal/ {
#
# rewrite ^/upgrade/api/fs/download/internal/(.*)$ /cloudfs/api/fs/download/internal/$1 break;
#
# proxy_cache upgrade_cache;
# proxy_cache_valid 200 30d;
# proxy_cache_key $uri$args;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $host;
# add_header Nginx-Cache $upstream_cache_status;
# proxy_pass http://cloudfs-server;
# break;
# }
}
}
- haproxy将相关路径转发给nginx代理
# 此段配置需要在cloudfs的acl之前
acl nginx-server path_beg -i /api/fs/view/ /cloudfs/api/fs/view/
# 缓存客户端文件
# acl nginx-server path_beg -i /upgrade/api/fs/download/internal/
use_backend nginx-server if nginx-server
backend nginx-server
mode http
option forwardfor
# 通过访问某个文件做健康检查,如某个应用的图标
option httpchk GET /cloudfs/api/fs/view/Z3JvdXAyL00wMC8wMy81RC9Dc0tzTEZZZmNKS0ljRTZ5QUFBR3R0X3MzU2dBQUI2cVFQXzNIa0FBQWJPNjIwOTI2Ng==
server nginx-247 127.0.0.1:8088 weight 1 check inter 10s
server nginx-248 10.100.100.8:8088 weight 2 check inter 10s