前面文章中详细讲解了各类属性代表含义,实际生产中我们可能需要更多的配置技巧完成实际的功能,我们这篇文章就总结一下常见的配置方法和实际应用

1. 伪静态

比如我们的博客显示页面是动态生成的,比如需要使用GET的方式在url上注明文章的id号,具体url格式: ,然后伪静态将动态生成页面伪装成静态页面。

将原本的请求路径改为通过 的方式访问。

这个技术可以通过spring 的参数路径来实现,同样可以使用我们的nginx 伪静态实现,在nginx反向代理后台服务器,外部直接通过80端口访问nginx。
nginx重写url,将重写后的url 转发给后台服务器,与此同时前端的浏览器的目的url还是原来的 。

优点:

  1. seo 更友好,静态化路径会更好收录
  2. 更安全,不容易被针对地址所攻击

示例:
http://192.168.203.102/article/detail?articleId=123adsas 改为 http://192.168.203.102/article/detail/123adsas.html

server {
    listen       80;
    server_name  localhost;
    rewrite_log on;
 
    access_log  /app/log/nginx/host.access.log  main;
    error_log   /app/log/nginx/host.error.log   notice;
   
    location / {
        proxy_pass   http://127.0.0.1:8080;
        rewrite ^(.*)/article/detail/(\w+).html$ $1/article/detail?articleId=$2 last;
    }
  
}

rewrite_log on; error_log /app/log/nginx/host.error.log notice;

之后可以更好的看到重写规则方便调试

tp nginx 伪静态 nginx伪静态设置_缓存


这一步是关键

rewrite ^(.*)/article/detail/(\w+).html$ $1/article/detail?articleId=$2 last;

将匹配 ^(.*)/article/detail/(\w+).html$ 然后把其替换成 $1/article/detail?articleId=$2 , 并且将正则匹配到的 第一个和第二个的值拼接上去 , 最后last 结束

如果是很多或者针对一个网站这样伪静态 可以把这些规则分组写到单独的文件里面然后再引用进来

2. 反向代理与负载均衡

负载均衡是指定一系列的后端服务,然后通过指定的策略去负载,最后在location 中指定这个负载均衡节点 , 完成反向代理与负载均衡

示例:
有3个tomcat 部署在服务器 192.168.35.101 192.168.35.102 192.168.35.103 上面,其服务内容都是一样的,需要配置一个地址 供用户统一调用地址 , 并且能够在三个服务间自动均衡访问压力

upstream balance.com{
server 192.168.35.101:8080;
server 192.168.35.102:8080;
server 192.168.35.103:8080;
}

server {
    listen       801;
    server_name  localhost;
    error_log /app/log/nginx/host.error.log notice;
    access_log /app/log/nginx/host.access.log main;
    location / {
        proxy_pass   http://balance.com;
    }

}

3. 动静分离

动静分离:动态资源(jsp、ftl、thymeleaf)与静态资源(js、css、img)分开部署。
其中nginx 对静态资源的访问性能远高出tomcat 等应用服务器,同时nginx 可以提供缓存和gzip等扩展,在高并发情况下还可以再进行集群避免单点故障
示例:
把Java web 应用中的gif|jpg|jpeg|png|bmp|swf 等结尾的静态资源都走 nginx 部署

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
                root /app/root/;
        }

这样就可以把所有这些结尾的,定位到对应网站根目录

4. 防盗链

随着网络开放,可能会出现别人把你的静态资源直接拿去用在他们的一些网站上面,但是占用的却是你网站的流量与带宽 , 我们当然要拒绝这种白嫖了

原理: 在网站中请求资源时浏览器会自动带上 referer 请求头,这个请求头就是当前站点的域名信息 ,我们可以根据这个判断当前强求资源来自哪里,是不是自己的网站上面来的

我们可以直接配置,如下:

针对几个后缀验证,判断是不是自己的域名 , 未通过校验可以直接返回403 或者 给个默认的放盗链警告图

location ~* \.(gif|jpg|png|swf|flv)$ { 
  valid_referers none blocked www.baidu.com baidu.com ; 
  if ($invalid_referer) { 
    # rewrite ^/ http://www.jzxue.com/retrun.html; 
    return 403; 
  } 
}

5. 图片缓存

图片等静态资源由于经常加载并且并发大,虽然nginx 处理静态资源强,但是该优化的还是得优化,开启缓存之后可以进一步优化性能,同时 缓存方案有两种:

proxy_cache proxy_store

6. gzip 图片压缩

7. 跨域问题

8.用户组权限问题

9.集群部署+kv