小白:一文让你了解nginx和jetty之间的私事儿(三)------ 如何使用nginx实现静态资源分离

写在前面的话

关于nginx和jetty之间的事儿是三少奶奶写的一个系列,每个系列环环相扣,所以强烈建议读者从第一话开始食用,希望能对你有所帮助

nginx优点之一就是能按客户端不同的请求,实现合理化的处理和转发,减轻对服务器资源的压力,例如:当用户访问服务器中的静态资源时,nginx可以避免请求jetty,tomcat等服务器,直接访问硬盘中的静态资源。

同通阅读本系列的前置博文,我们实现了为nginx安装https证书和强制http请求跳转到https请求,一下是相关链接

1,如何为nginx配置https

2,如何强制从http跳转到https

3,如何实现静态资源分离

4,nginx如何跳转到指定项目

本文将介绍如何使用nginx实现对静态资源的分离

一:对服务器中图片的分离操作

前置环境:

     1,三少奶奶把项目放到了jetty的weapps文件夹下,并且项目的图片统一存储在weapps下的upload文件中。

     2,jetty服务器中监听的是8181端口

步骤一:当直接使用8181端口进行访问项目中的图片时,url是:localhost:8181/upload/2019-01-02/XXX.jpg

步骤二:我们在nginx.conf文件中添加以下代码块,便可实现访问服务器中图片时不经过jetty

location ^~ /upload/
        {
           expires      7d; #缓存7天
           alias C:/Users/Administrator/Desktop/jetty-distribution-9.4.18.v20190429/webapps/upload/;
        }

解释:location 代表着客户请求的url地址 其后面跟着的是正则表达式 具体含义和用法 建议大家在csdn中搜索。这段代码的含义是 当客户端请求的url是 www.demo.xyz/upload/XXXXX 时,将会直接请求alias所指向的路径,

举例:客户端请求url : www.demo.xyz/upload/2019-08-02/1.jpg; 上述代码将会被匹配,nginx将通过alias重新拼接请求路径,

新的请求路径为 C:/Users/Administrator/Desktop/jetty-distribution-9.4.18.v20190429/webapps/upload/2019-08-02/1.jpg;

 

提示:红色部分代表着拼接的内容

 

同理可得:想要客户端访问服务器中的css,js等资源时,不经过服务器,读者只需要把root后面的地址修改成 css或者js等文件在硬盘上的位置即可  

 

完整代码如下


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    sendfile        on;
 	server {
		listen 80;
		server_name www.demo.xyz; #备案域名
		rewrite ^ https://$http_host$request_uri? permanent;
	}

    server {
        listen       443 ssl;
        server_name www.demo.xyz; #备案域名
        
        keepalive_timeout   70;
        ssl_certificate     1_www.demo.xyz_bundle.crt; #申请的域名证书
        ssl_certificate_key 2_www.demo.xyz.key;  #申请的域名证书
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;

location  /
        {
           proxy_pass http://localhost:8181/;
        }

	location ^~ /upload/
        {
           expires      7d; #缓存7天
           alias  C:/Users/Administrator/Desktop/jetty-distribution-9.4.18.v20190429/webapps/upload/;
        }


location ^~ /myproject/plugins/
        {
           expires      7d;
# 所有css和js文件 在硬盘中的位置
           alias  C:/Users/Administrator/Desktop/jetty-distribution-9.4.18.v20190429/webapps/myproject/WEB-INF/static/plugins/;
	   autoindex on;
        }

        
    }
}

总结:通过上述的配置文件,我们启动nginx后 在浏览器中输入对应域名,就可以以https的方式访问到我们jetty服务器上的内容,但不巧的是,没有跳转到运行在jetty上的项目,具体如何实现,用户输入域名就能跳转到我们运行再jetty上的项目呢?休息5分钟,三少奶奶将附上相关链接

1,如何为nginx配置https

2,如何强制从http跳转到https

3,如何实现静态资源分离

4,nginx如何跳转到指定项目

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值