Nginx 静态资源转发配置

本文介绍了如何在Nginx中配置静态资源转发。通过修改nginx.conf文件,在server监听的80端口下添加location指令,利用正则表达式匹配以特定前缀(如images、image、js)的URL,将请求定向到指定的本地目录。例如,当请求http://172.16.20.83/json/login.json时,Nginx会查找/usr/mmtStatic/json路径下的login.json文件并返回内容。如果请求的文件不存在,Nginx会返回404错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.修改nginx.conf配置文件


user  nobody;# 工作进程的属主
worker_processes  4;#推荐worker数为cpu核数,避免cpu不必要的上下文切换

error_log   /usr/local/nginx/logs/error.log;
#error_log  /usr/local/nginx/logs/error.log  notice;
#error_log  /usr/local/nginx/logs/error.log  info;

#pid         /usr/local/nginx/logs/nginx.pid;


events {
    use epoll;#Linux 下性能最好的 event 模式,macOS下无法启用此模式!
    #表示每个worker进程所能建立连接的最大值
    #一个nginx最大的连接数max=worker_connections*worker_processes;
    #对于http请求本地资源最大并发数量为max
    #如果http作为反向代理,最大并发数为max/2。因为每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。
    worker_connections  2048;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log	   /usr/local/nginx/logs/access.log  main;# 日志文件名

    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
	
    #开启gzip压缩
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 8k;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css application/xml;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
	
	    location / {
            root   html;
            index  index.html index.htm;
        }

        location ~^/(images|image|javascript|js|css|static|json|staticImage)/ {
            root   /usr/mmtStatic;
            access_log  off;
	    expires     3000d;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
    }

}

通过在server监控的 80 端口下新增一个 location 来指定静态文件路径.location允许根据url进行不同的配置.

  • “~” 匹配时区分大小写
  • “~*” 匹配时不区分大小写
  • “=” 精确匹配字符和字符串“^~”  
  • “^~” 例如: ^~ /images/ 匹配到任何以images开头的,便停止搜索。

   location ~^/(imgaes|image|js)/ {

    请求文件的根目录  /usr/mmtStatic;

    过期时间 expire 3000天;   

 }

这里的 location 匹配以images等开头的路径

    如果路径不存在,会提示404

    如果路径存在,则返回相关文件

 

example:

1.在浏览器中输入 http://172.16.20.83/json/login.json

实际在linux中,根据上面的配置文件,会到 /usr/mmtStatic/json 下去寻找login.json

在linux中目录如下:mmtStatic下面有json目录,在json目录中有login.json文件

175101_iLE4_2248830.png

因此浏览器会显示login.json中的相关内容,显示如下:

175233_poRF_2248830.png

2.若修改为login1.json,则返回404页面

 

### 配置Nginx作为静态资源的反向代理服务器 #### 创建或编辑Nginx配置文件 为了使Nginx能够有效地充当静态资源的反向代理服务器,需创建或修改现有的`nginx.conf`文件,在其中定义具体的location块来匹配要代理的URL模式。 对于特定JavaScript库文件的代理设置可以如下所示: ```nginx location /public/scripts/y-jssdk.js { proxy_pass https://tm.test.com/public/scripts/y-jssdk.js; } ``` 此段代码指定了当接收到针对`/public/scripts/y-jssdk.js`路径的请求时,Nginx会将其转发给指定的目标地址,并返回响应给客户端[^1]。 #### 设置根目录下的静态资源代理 如果希望对整个站点根目录下的所有静态资源实施统一管理,则可以在server上下文中加入相应的location指令: ```nginx location /static/ { alias /var/www/html/static/; } ``` 这里通过alias关键字指向实际存储这些资源的位置。注意这里的区别在于使用了`alias`而不是`root`,因为两者处理路径的方式不同;`alias`直接映射到设定的具体位置,而`root`会在其基础上附加location部分形成最终查找路径[^2]。 #### 处理带有扩展名的媒体文件 针对视频或其他多媒体类型的静态内容,可以通过正则表达式精确控制哪些类型的文件应该被缓存以及它们的有效期: ```nginx location ~* \.(mp4|ogg|webm)$ { expires max; add_header Cache-Control "public"; root /opt/media/files; } ``` 上述例子中设置了MP4、OGG和WebM格式的视频文件最长可能时间内的浏览器缓存策略,并允许公共缓存机制参与工作。 完成以上任何一种形式的配置更改之后,务必执行命令验证语法正确性和应用新的配置: ```bash sudo nginx -t && sudo systemctl reload nginx ``` 这一步骤确保了即使存在错误也能及时发现并修正而不影响现有服务运行状态[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值