标签:nginx 服务器 动静分离 反向代理 缓存
一,nginx反向代理配置
#tomcat
-
upstream tomcat_server{
-
server 127.0.0.1:8080;
-
}
-
-
-
-
erver{
-
listen 80;
-
server_name www.wolfdream.com;
-
-
location / {
-
-
proxy_redirect off;
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
proxy_pass http:
-
-
}
显然就是用户访问www.wolfdream.com(需要设置本地localhost,将www.wolfdream.com指向nginx所在IP)的时候(或将www.wolfdream.com直接写在nginx所在的IP地址),将请求转到到后台的tomcat服务器,即127.0.0.1:8080,并将请求到的数据转发给client
二,动静态请求相分离
神马意思?图片,JS,HTML等静态的东西去访问一台专门的服务器,而动态的请求去访问另一台服务器。就这么简单,上例子:
-
server {
-
listen 192.168.154.128:80;
-
server_name image.wolfdream.com;
-
index index.html;
-
-
-
#proxy_pass http:
-
-
#charset koi8-r;
-
-
#access_log logs/host.access.log main;
-
-
-
-
location / {
-
root html;
-
#index index.html index.htm;
-
proxy_redirect off;
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
-
-
}
-
-
-
-
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
-
{
-
-
valid_referers none blocked 192.168.154.128 192.168.154.1;
-
if ($invalid_referer)
-
{
-
rewrite ^ /403.jpg break;
-
}
-
-
if (!-f $request_filename) {
-
rewrite ^ /404.jpg last;
-
}
-
-
expires 30d;
-
-
}
-
#error_page 404 /404.html;
-
-
# redirect server error pages to the static page /50x.html
-
#
-
error_page 500 502 503 504 /50x.html;
-
location = /404.jpg {
-
root html;
-
}
-
-
}
-
-
tomcat
-
upstream tomcat_server{
-
server 127.0.0.1:8080;
-
}
-
-
-
server{
-
listen 192.168.154.128;
-
server_name www.wolfdream.com;
-
-
location / {
-
-
-
proxy_redirect off;
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
proxy_pass http:
-
-
}
-
-
-
-
}
上面这种方式是通过设定不同的域名,可不可以在同一个域名中,通过判断后缀来将动态与静态请求相分离呢?
-
#tomcat
-
upstream tomcat_server{
-
server 127.0.0.1:8080;
-
}
-
-
-
server{
-
listen 192.168.154.128;
-
server_name www.wolf.com;
-
-
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
-
{
-
-
root html;
-
-
}
-
-
-
location ~ .*\.(jsp|do)$ {
-
-
proxy_redirect off;
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
proxy_pass http:
-
-
}
OK!同一个域名,根据后缀不同,请求不同的服务,实现动态静态请求相分离。仔细想一想,如果又出现了一种静态的文件,比如*.abc ,那难道又去修改那个配制文件吗?显然不太合理,所以可以考虑将所有的表态文件放在同一个根目录下面,比如/static那么可以将上面的静态页面请求修改一下:
-
location /static
-
{
-
-
root html/static;
-
-
}
咦这样是不是就好一些了,而且文件的存放也比较有规范了。
三,nginx缓存应用
nginx具有web缓存服务,proxy_cache,但是有一个问题就是,proxy_cache不能清除指定的URL缓存,只能设置URL过期时间,但是有问题,有人就会很快解决问题,nginx第三方模块ngx_cache_purge能清除指定URL。
nginx安装时需要将ngx_cache_purege加载进去。
-
./configure --user=www --group=www --add-module=/root/dxm/nginx/ngx_cache_purge-1.2
其中,/root/dxm/nginx/ngx_cache_purge-1.2为ngx_cache_purge解压路径(附件中提供ngx_cache_purge tar包下载)
现在来一段实例,实现图片缓存:
话说proxy_tem_path,与proxy_cache_path必须在同一个分区之下!
-
proxy_temp_path /usr/local/nginx/proxy_temp;
-
proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g;
-
upstream tomcat_server{
-
server 127.0.0.1:8080;
-
}
-
-
-
server{
-
listen 192.168.154.128;
-
server_name www.wolf.com;
-
-
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
-
{
-
-
proxy_cache cache_one;
-
proxy_cache_methods GET HEAD POST;
-
proxy_cache_min_uses 1;
-
proxy_cache_valid 200 302 10m;
-
proxy_cache_valid 404 1m;
-
proxy_cache_valid any 1m;
-
proxy_cache_key "$host:$server_port$uri$is_args$args";
-
-
proxy_redirect off;
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
proxy_pass http:
-
-
-
}
-
-
-
location ~ .*\.(jsp)$ {
-
-
proxy_redirect off;
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
proxy_pass http:
-
-
}
-
-
-
location ~ /purge(/.*)
-
{
-
allow 192.168.154.128;
-
allow 192.168.154.1;
-
deny all;
-
proxy_cache_purge cache_one $host:$server_port$1$is_args$args;
-
}
恩,静态页面缓存,动态请求不缓存!
大家看一下最后一段的那个purege配置,很显然,表示哪些IP可以手动清除指定的URL
比如,www.wolfdraem.cn/1.jpg可以访问到我的图片,那么用www.wolfdream.cn/purge/1.jpg 就可以清除图片缓存了。
http://www.iteye.com/topic/966903
nginx反向代理,动静态请求分离,以及nginx缓存应用,以及使用ngx_cache_purge清除指定URL
标签:nginx 服务器 动静分离 反向代理 缓存
原文地址:http://blog.csdn.net/nyist327/article/details/42645483